diff --git a/client/client-conn.go b/client/client-conn.go
index fb131d8..ccecded 100644
--- a/client/client-conn.go
+++ b/client/client-conn.go
@@ -7,8 +7,8 @@ import (
 	"io"
 	"net"
 	"unicode"
-	"vncproxy/common"
-	"vncproxy/logger"
+	"github.com/amitbet/vncproxy/common"
+	"github.com/amitbet/vncproxy/logger"
 )
 
 // A ServerMessage implements a message sent from the server to the client.
diff --git a/client/pixel-format.go b/client/pixel-format.go
index 39fc02b..5cbc18b 100644
--- a/client/pixel-format.go
+++ b/client/pixel-format.go
@@ -4,7 +4,7 @@ import (
 	"bytes"
 	"encoding/binary"
 	"io"
-	"vncproxy/common"
+	"github.com/amitbet/vncproxy/common"
 )
 
 func readPixelFormat(r io.Reader, result *common.PixelFormat) error {
diff --git a/client/server-messages.go b/client/server-messages.go
index 2746a13..a677cc1 100644
--- a/client/server-messages.go
+++ b/client/server-messages.go
@@ -6,9 +6,9 @@ import (
 	"fmt"
 	"io"
 	"strings"
-	"vncproxy/common"
-	"vncproxy/encodings"
-	"vncproxy/logger"
+	"github.com/amitbet/vncproxy/common"
+	"github.com/amitbet/vncproxy/encodings"
+	"github.com/amitbet/vncproxy/logger"
 )
 
 // MsgFramebufferUpdate consists of a sequence of rectangles of
diff --git a/client/write-to.go b/client/write-to.go
index 5e6af65..c7498c0 100644
--- a/client/write-to.go
+++ b/client/write-to.go
@@ -2,8 +2,8 @@ package client
 
 import (
 	"io"
-	"vncproxy/common"
-	"vncproxy/logger"
+	"github.com/amitbet/vncproxy/common"
+	"github.com/amitbet/vncproxy/logger"
 )
 
 type WriteTo struct {
diff --git a/common/rfb-reader-helper.go b/common/rfb-reader-helper.go
index 75dfcc0..59b41a6 100644
--- a/common/rfb-reader-helper.go
+++ b/common/rfb-reader-helper.go
@@ -5,7 +5,7 @@ import (
 	"encoding/binary"
 	"errors"
 	"io"
-	"vncproxy/logger"
+	"github.com/amitbet/vncproxy/logger"
 )
 
 var TightMinToCompress = 12
diff --git a/encodings/enc-copy-rect.go b/encodings/enc-copy-rect.go
index 8a6e6bf..c8a7351 100644
--- a/encodings/enc-copy-rect.go
+++ b/encodings/enc-copy-rect.go
@@ -3,7 +3,7 @@ package encodings
 import (
 	"encoding/binary"
 	"io"
-	"vncproxy/common"
+	"github.com/amitbet/vncproxy/common"
 )
 
 type CopyRectEncoding struct {
diff --git a/encodings/enc-corre.go b/encodings/enc-corre.go
index 5ab5831..ba04c19 100644
--- a/encodings/enc-corre.go
+++ b/encodings/enc-corre.go
@@ -3,7 +3,7 @@ package encodings
 import (
 	"encoding/binary"
 	"io"
-	"vncproxy/common"
+	"github.com/amitbet/vncproxy/common"
 )
 
 type CoRREEncoding struct {
diff --git a/encodings/enc-cursor-pseudo.go b/encodings/enc-cursor-pseudo.go
index 74bed99..50be131 100644
--- a/encodings/enc-cursor-pseudo.go
+++ b/encodings/enc-cursor-pseudo.go
@@ -3,7 +3,7 @@ package encodings
 import (
 	"io"
 	"math"
-	"vncproxy/common"
+	"github.com/amitbet/vncproxy/common"
 )
 
 type EncCursorPseudo struct {
diff --git a/encodings/enc-hextile.go b/encodings/enc-hextile.go
index 3f56a21..7f90839 100644
--- a/encodings/enc-hextile.go
+++ b/encodings/enc-hextile.go
@@ -2,8 +2,8 @@ package encodings
 
 import (
 	"io"
-	"vncproxy/common"
-	"vncproxy/logger"
+	"github.com/amitbet/vncproxy/common"
+	"github.com/amitbet/vncproxy/logger"
 )
 
 const (
diff --git a/encodings/enc-led-state.go b/encodings/enc-led-state.go
index a0966e1..97e4e5a 100644
--- a/encodings/enc-led-state.go
+++ b/encodings/enc-led-state.go
@@ -2,8 +2,8 @@ package encodings
 
 import (
 	"io"
-	"vncproxy/common"
-	"vncproxy/logger"
+	"github.com/amitbet/vncproxy/common"
+	"github.com/amitbet/vncproxy/logger"
 )
 
 type EncLedStatePseudo struct {
diff --git a/encodings/enc-pseudo.go b/encodings/enc-pseudo.go
index 128ccc9..2261520 100644
--- a/encodings/enc-pseudo.go
+++ b/encodings/enc-pseudo.go
@@ -2,7 +2,7 @@ package encodings
 
 import (
 	"io"
-	"vncproxy/common"
+	"github.com/amitbet/vncproxy/common"
 )
 
 type PseudoEncoding struct {
diff --git a/encodings/enc-raw.go b/encodings/enc-raw.go
index 41fc8e7..bc8bc28 100644
--- a/encodings/enc-raw.go
+++ b/encodings/enc-raw.go
@@ -3,7 +3,7 @@ package encodings
 import (
 	"bytes"
 	"io"
-	"vncproxy/common"
+	"github.com/amitbet/vncproxy/common"
 )
 
 // RawEncoding is raw pixel data sent by the server.
diff --git a/encodings/enc-rre.go b/encodings/enc-rre.go
index e1f3c86..ccd9b0e 100644
--- a/encodings/enc-rre.go
+++ b/encodings/enc-rre.go
@@ -3,7 +3,7 @@ package encodings
 import (
 	"encoding/binary"
 	"io"
-	"vncproxy/common"
+	"github.com/amitbet/vncproxy/common"
 )
 
 type RREEncoding struct {
diff --git a/encodings/enc-tight.go b/encodings/enc-tight.go
index c1cb881..2f3856d 100644
--- a/encodings/enc-tight.go
+++ b/encodings/enc-tight.go
@@ -4,8 +4,8 @@ import (
 	"bytes"
 	"errors"
 	"io"
-	"vncproxy/common"
-	"vncproxy/logger"
+	"github.com/amitbet/vncproxy/common"
+	"github.com/amitbet/vncproxy/logger"
 )
 
 var TightMinToCompress int = 12
diff --git a/encodings/enc-tightpng.go b/encodings/enc-tightpng.go
index 68639fa..7c536d6 100644
--- a/encodings/enc-tightpng.go
+++ b/encodings/enc-tightpng.go
@@ -3,8 +3,8 @@ package encodings
 import (
 	"fmt"
 	"io"
-	"vncproxy/common"
-	"vncproxy/logger"
+	"github.com/amitbet/vncproxy/common"
+	"github.com/amitbet/vncproxy/logger"
 )
 
 type TightPngEncoding struct {
diff --git a/encodings/enc-zlib.go b/encodings/enc-zlib.go
index be27029..bc1ee33 100644
--- a/encodings/enc-zlib.go
+++ b/encodings/enc-zlib.go
@@ -4,7 +4,7 @@ import (
 	"bytes"
 	"encoding/binary"
 	"io"
-	"vncproxy/common"
+	"github.com/amitbet/vncproxy/common"
 )
 
 type ZLibEncoding struct {
diff --git a/encodings/enc-zrle.go b/encodings/enc-zrle.go
index 5f2eeb4..a4653ec 100644
--- a/encodings/enc-zrle.go
+++ b/encodings/enc-zrle.go
@@ -4,7 +4,7 @@ import (
 	"bytes"
 	"encoding/binary"
 	"io"
-	"vncproxy/common"
+	"github.com/amitbet/vncproxy/common"
 )
 
 type ZRLEEncoding struct {
diff --git a/go.mod b/go.mod
new file mode 100644
index 0000000..ebb757d
--- /dev/null
+++ b/go.mod
@@ -0,0 +1,3 @@
+module github.com/amitbet/vncproxy
+
+require golang.org/x/net v0.0.0-20181129055619-fae4c4e3ad76
diff --git a/go.sum b/go.sum
new file mode 100644
index 0000000..4902ffc
--- /dev/null
+++ b/go.sum
@@ -0,0 +1,2 @@
+golang.org/x/net v0.0.0-20181129055619-fae4c4e3ad76 h1:xx5MUFyRQRbPk6VjWjIE1epE/K5AoDD8QUN116NCy8k=
+golang.org/x/net v0.0.0-20181129055619-fae4c4e3ad76/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
diff --git a/player/cmd/main.go b/player/cmd/main.go
index 01f297c..b8aa5ad 100644
--- a/player/cmd/main.go
+++ b/player/cmd/main.go
@@ -4,11 +4,11 @@ import (
 	"flag"
 	"fmt"
 	"os"
-	"vncproxy/common"
-	"vncproxy/encodings"
-	"vncproxy/logger"
-	"vncproxy/player"
-	"vncproxy/server"
+	"github.com/amitbet/vncproxy/common"
+	"github.com/amitbet/vncproxy/encodings"
+	"github.com/amitbet/vncproxy/logger"
+	"github.com/amitbet/vncproxy/player"
+	"github.com/amitbet/vncproxy/server"
 )
 
 func main() {
diff --git a/player/fbs-play-listener.go b/player/fbs-play-listener.go
index f4458aa..939e06e 100644
--- a/player/fbs-play-listener.go
+++ b/player/fbs-play-listener.go
@@ -5,10 +5,10 @@ import (
 
 	"io"
 	"time"
-	"vncproxy/client"
-	"vncproxy/common"
-	"vncproxy/logger"
-	"vncproxy/server"
+	"github.com/amitbet/vncproxy/client"
+	"github.com/amitbet/vncproxy/common"
+	"github.com/amitbet/vncproxy/logger"
+	"github.com/amitbet/vncproxy/server"
 )
 
 type VncStreamFileReader interface {
diff --git a/player/fbs-reader.go b/player/fbs-reader.go
index d6c6b7c..27ec746 100644
--- a/player/fbs-reader.go
+++ b/player/fbs-reader.go
@@ -5,9 +5,9 @@ import (
 	"encoding/binary"
 	"io"
 	"os"
-	"vncproxy/common"
-	"vncproxy/encodings"
-	"vncproxy/logger"
+	"github.com/amitbet/vncproxy/common"
+	"github.com/amitbet/vncproxy/encodings"
+	"github.com/amitbet/vncproxy/logger"
 )
 
 type FbsReader struct {
diff --git a/player/player_test.go b/player/player_test.go
index ec76b28..998ed11 100644
--- a/player/player_test.go
+++ b/player/player_test.go
@@ -3,10 +3,10 @@ package player
 import (
 	"testing"
 	"time"
-	"vncproxy/common"
-	"vncproxy/encodings"
-	"vncproxy/logger"
-	"vncproxy/server"
+	"github.com/amitbet/vncproxy/common"
+	"github.com/amitbet/vncproxy/encodings"
+	"github.com/amitbet/vncproxy/logger"
+	"github.com/amitbet/vncproxy/server"
 )
 
 func TestServer(t *testing.T) {
diff --git a/proxy/cmd/main.go b/proxy/cmd/main.go
index 2d4b755..35e6f9a 100644
--- a/proxy/cmd/main.go
+++ b/proxy/cmd/main.go
@@ -4,8 +4,8 @@ import (
 	"flag"
 	"os"
 
-	"vncproxy/logger"
-	vncproxy "vncproxy/proxy"
+	"github.com/amitbet/vncproxy/logger"
+	vncproxy "github.com/amitbet/vncproxy/proxy"
 )
 
 func main() {
diff --git a/proxy/message-listeners.go b/proxy/message-listeners.go
index 1fde903..fa4591b 100644
--- a/proxy/message-listeners.go
+++ b/proxy/message-listeners.go
@@ -1,10 +1,10 @@
 package proxy
 
 import (
-	"vncproxy/client"
-	"vncproxy/common"
-	"vncproxy/logger"
-	"vncproxy/server"
+	"github.com/amitbet/vncproxy/client"
+	"github.com/amitbet/vncproxy/common"
+	"github.com/amitbet/vncproxy/logger"
+	"github.com/amitbet/vncproxy/server"
 )
 
 type ClientUpdater struct {
diff --git a/proxy/proxy.go b/proxy/proxy.go
index 8198ef5..e93fd70 100644
--- a/proxy/proxy.go
+++ b/proxy/proxy.go
@@ -5,13 +5,13 @@ import (
 	"path"
 	"strconv"
 	"time"
-	"vncproxy/client"
-	"vncproxy/common"
-	"vncproxy/encodings"
-	"vncproxy/logger"
-	"vncproxy/player"
-	listeners "vncproxy/recorder"
-	"vncproxy/server"
+	"github.com/amitbet/vncproxy/client"
+	"github.com/amitbet/vncproxy/common"
+	"github.com/amitbet/vncproxy/encodings"
+	"github.com/amitbet/vncproxy/logger"
+	"github.com/amitbet/vncproxy/player"
+	listeners "github.com/amitbet/vncproxy/recorder"
+	"github.com/amitbet/vncproxy/server"
 )
 
 type VncProxy struct {
diff --git a/recorder/cmd/main.go b/recorder/cmd/main.go
index 7d90342..021d6b2 100644
--- a/recorder/cmd/main.go
+++ b/recorder/cmd/main.go
@@ -5,11 +5,11 @@ import (
 	"net"
 	"os"
 	"time"
-	"vncproxy/client"
-	"vncproxy/common"
-	"vncproxy/encodings"
-	"vncproxy/logger"
-	"vncproxy/recorder"
+	"github.com/amitbet/vncproxy/client"
+	"github.com/amitbet/vncproxy/common"
+	"github.com/amitbet/vncproxy/encodings"
+	"github.com/amitbet/vncproxy/logger"
+	"github.com/amitbet/vncproxy/recorder"
 )
 
 func main() {
diff --git a/recorder/recorder.go b/recorder/recorder.go
index 28dfd0e..2d4ff31 100644
--- a/recorder/recorder.go
+++ b/recorder/recorder.go
@@ -5,9 +5,9 @@ import (
 	"encoding/binary"
 	"os"
 	"time"
-	"vncproxy/common"
-	"vncproxy/logger"
-	"vncproxy/server"
+	"github.com/amitbet/vncproxy/common"
+	"github.com/amitbet/vncproxy/logger"
+	"github.com/amitbet/vncproxy/server"
 )
 
 type Recorder struct {
diff --git a/recorder/rfb-requester.go b/recorder/rfb-requester.go
index b72806c..b0d8160 100644
--- a/recorder/rfb-requester.go
+++ b/recorder/rfb-requester.go
@@ -2,9 +2,9 @@ package recorder
 
 import (
 	"time"
-	"vncproxy/client"
-	"vncproxy/common"
-	"vncproxy/logger"
+	"github.com/amitbet/vncproxy/client"
+	"github.com/amitbet/vncproxy/common"
+	"github.com/amitbet/vncproxy/logger"
 )
 
 type RfbRequester struct {
diff --git a/server/client-messages.go b/server/client-messages.go
index 5a1e64c..cb8ae08 100644
--- a/server/client-messages.go
+++ b/server/client-messages.go
@@ -3,7 +3,7 @@ package server
 import (
 	"encoding/binary"
 	"io"
-	"vncproxy/common"
+	"github.com/amitbet/vncproxy/common"
 )
 
 // Key represents a VNC key press.
diff --git a/server/handlers.go b/server/handlers.go
index 70b58dd..03c73e5 100644
--- a/server/handlers.go
+++ b/server/handlers.go
@@ -3,10 +3,10 @@ package server
 import (
 	"encoding/binary"
 	"fmt"
-	"vncproxy/common"
+	"github.com/amitbet/vncproxy/common"
 
 	"io"
-	"vncproxy/logger"
+	"github.com/amitbet/vncproxy/logger"
 )
 
 const ProtoVersionLength = 12
diff --git a/server/security.go b/server/security.go
index e122834..7ab8cd1 100644
--- a/server/security.go
+++ b/server/security.go
@@ -6,7 +6,7 @@ import (
 	"crypto/rand"
 	"errors"
 	"log"
-	"vncproxy/common"
+	"github.com/amitbet/vncproxy/common"
 )
 
 type SecurityType uint8
diff --git a/server/server-conn.go b/server/server-conn.go
index 3550936..d69b0d4 100644
--- a/server/server-conn.go
+++ b/server/server-conn.go
@@ -5,8 +5,8 @@ import (
 	"fmt"
 	"io"
 	"sync"
-	"vncproxy/common"
-	"vncproxy/logger"
+	"github.com/amitbet/vncproxy/common"
+	"github.com/amitbet/vncproxy/logger"
 )
 
 type ServerConn struct {
diff --git a/server/server.go b/server/server.go
index bb19761..f90b7d9 100644
--- a/server/server.go
+++ b/server/server.go
@@ -5,7 +5,7 @@ import (
 	"io"
 	"log"
 	"net"
-	"vncproxy/common"
+	"github.com/amitbet/vncproxy/common"
 )
 
 var DefaultClientMessages = []common.ClientMessage{
diff --git a/server/server_test.go b/server/server_test.go
index 1938959..d2ac08b 100644
--- a/server/server_test.go
+++ b/server/server_test.go
@@ -3,8 +3,8 @@ package server
 import (
 	"log"
 	"testing"
-	"vncproxy/common"
-	"vncproxy/encodings"
+	"github.com/amitbet/vncproxy/common"
+	"github.com/amitbet/vncproxy/encodings"
 )
 
 func newServerConnHandler(cfg *ServerConfig, conn *ServerConn) error {
diff --git a/server/ws-server-go.go b/server/ws-server-go.go
index d23161f..ae0f877 100644
--- a/server/ws-server-go.go
+++ b/server/ws-server-go.go
@@ -4,7 +4,7 @@ import (
 	"io"
 	"net/http"
 	"net/url"
-	"vncproxy/logger"
+	"github.com/amitbet/vncproxy/logger"
 
 	"golang.org/x/net/websocket"
 )