diff --git a/main.go b/main.go
index a1ea7ca..ed3520a 100644
--- a/main.go
+++ b/main.go
@@ -4,20 +4,14 @@
 	"context"
 	"flag"
 	"fmt"
-	"net"
-	"net/http"
 	"reflect"
 	"strconv"
 	"strings"
 
-	"code.hackerspace.pl/q3k/hspki"
+	"code.hackerspace.pl/q3k/mirko"
 	"github.com/golang/glog"
-	"github.com/q3k/statusz"
 	"github.com/ziutek/telnet"
-	"golang.org/x/net/trace"
-	"google.golang.org/grpc"
 	"google.golang.org/grpc/codes"
-	"google.golang.org/grpc/reflection"
 	"google.golang.org/grpc/status"
 
 	pb "code.hackerspace.pl/q3k/m6220-proxy/proto"
@@ -25,8 +19,6 @@
 )
 
 var (
-	flagListenAddress  string
-	flagDebugAddress   string
 	flagSwitchAddress  string
 	flagSwitchUsername string
 	flagSwitchPassword string
@@ -260,8 +252,6 @@
 }
 
 func main() {
-	flag.StringVar(&flagListenAddress, "listen_address", "127.0.0.1:42000", "Address to listen on for gRPC")
-	flag.StringVar(&flagDebugAddress, "debug_address", "127.0.0.1:42001", "Address to listen on for Debug HTTP")
 	flag.StringVar(&flagSwitchAddress, "switch_address", "127.0.0.1:23", "Telnet address of M6220")
 	flag.StringVar(&flagSwitchUsername, "switch_username", "admin", "Switch login username")
 	flag.StringVar(&flagSwitchPassword, "switch_password", "admin", "Switch login password")
@@ -271,48 +261,17 @@
 		connectionSemaphore: make(chan int, 1),
 	}
 
-	grpc.EnableTracing = true
-	grpcLis, err := net.Listen("tcp", flagListenAddress)
-	if err != nil {
-		glog.Exitf("Could not listen on %v: %v", flagListenAddress, err)
-	}
-	grpcSrv := grpc.NewServer(hspki.WithServerHSPKI()...)
-	pb.RegisterM6220ProxyServer(grpcSrv, s)
-	tpb.RegisterSwitchControlServer(grpcSrv, s)
-	reflection.Register(grpcSrv)
-
-	glog.Infof("Starting gRPC on %v", flagListenAddress)
-	go func() {
-		if err := grpcSrv.Serve(grpcLis); err != nil {
-			glog.Exitf("Could not start gRPC: %v", err)
-		}
-	}()
-
-	if flagDebugAddress != "" {
-		glog.Infof("Starting debug on %v", flagDebugAddress)
-		httpMux := http.NewServeMux()
-		httpMux.HandleFunc("/debug/status", statusz.StatusHandler)
-		httpMux.HandleFunc("/debug/requests", trace.Traces)
-		httpMux.HandleFunc("/", statusz.StatusHandler)
-
-		httpLis, err := net.Listen("tcp", flagDebugAddress)
-		if err != nil {
-			glog.Exitf("Could not listen on %v: %v", flagDebugAddress, err)
-		}
-		httpSrv := &http.Server{
-			Addr:    flagDebugAddress,
-			Handler: httpMux,
-		}
-
-		go func() {
-			if err := httpSrv.Serve(httpLis); err != nil {
-				glog.Exitf("Could not start HTTP server: %v", err)
-			}
-		}()
-
+	m := mirko.New()
+	if err := m.Listen(); err != nil {
+		glog.Exitf("Listen(): %v", err)
 	}
 
-	glog.Infof("Running!")
+	pb.RegisterM6220ProxyServer(m.GRPC(), s)
+	tpb.RegisterSwitchControlServer(m.GRPC(), s)
+
+	if err := m.Serve(); err != nil {
+		glog.Exitf("Serve(): %v", err)
+	}
 
 	select {}
 }
