diff --git a/src/web/web.go b/src/web/web.go
index 65a69cc8ca3f05542f383947a4580da1fb72a93e..7091f17df1d7e945034c7baa6ffc193485b958a7 100644
--- a/src/web/web.go
+++ b/src/web/web.go
@@ -220,11 +220,6 @@ func (p *ChildProcess) eval_command(command string, timeout uint64) MaximaRespon
 	return MaximaResponse{&outbuf, float64(total.Microseconds()) / 1000, nil}
 }
 
-func write_500(w http.ResponseWriter) {
-	w.WriteHeader(http.StatusInternalServerError)
-	fmt.Fprint(w, "500 - internal server error\n")
-}
-
 // kills all processes of user and remove temporary directories
 func process_cleanup(user *User, user_queue chan<- *User, tmp_dir string) {
 	defer os.RemoveAll(tmp_dir)
@@ -278,7 +273,8 @@ func (req *MaximaRequest) write_timeout_err() {
 }
 
 func (req *MaximaRequest) respond_with_error(format string, a ...interface{}) {
-	write_500(req.W)
+	req.W.WriteHeader(http.StatusInternalServerError)
+	fmt.Fprint(req.W, "500 - internal server error\n")
 	req.Metrics.NumIntError.Inc()
 	req.log_with_input(format, a...)
 }
@@ -329,9 +325,7 @@ func (req *MaximaRequest) WriteResponse(response MaximaResponse) {
 		return
 	}
 	if err != nil {
-		write_500(req.W)
-		req.Metrics.NumIntError.Inc()
-		req.log_with_input("Error: Communicating with maxima failed: %s", err)
+		req.respond_with_error("Error: Communicating with maxima failed: %s", err)
 		return
 	}
 	if req.Health {
@@ -492,8 +486,7 @@ func get_env_number_positive(varname string, def uint) (uint, error) {
 	return uint(number), nil
 }
 
-func main() {
-	// register/initialize various prometheus metrics
+func init_metrics() Metrics {
 	metrics := Metrics{
 		ResponseTime: prometheus.NewHistogram(prometheus.HistogramOpts{
 			Name:    "maxima_response_time",
@@ -522,6 +515,11 @@ func main() {
 	prometheus.MustRegister(metrics.NumIntError)
 	prometheus.MustRegister(metrics.NumTimeout)
 	prometheus.MustRegister(metrics.QueueLen)
+	return metrics
+}
+
+func main() {
+	metrics := init_metrics()
 
 	if len(os.Args) != 2 {
 		log.Fatal("Fatal: wrong cli-argument usage: web [path to maxima executable]")