diff --git a/cmd/cgat/main.go b/cmd/cgat/main.go
index 0e9abc819e381d6f14f85a377cc59ca69c40da82..884aab988d2c1efada4a179bb05c679e6d275156 100644
--- a/cmd/cgat/main.go
+++ b/cmd/cgat/main.go
@@ -1,14 +1,19 @@
 package main
 
-import "pggat2/lib/frontend/frontends/v0"
+import (
+	"net"
+
+	"pggat2/lib/backend/backends/v0"
+)
 
 func main() {
-	fe, err := frontends.NewFrontend()
+	conn, err := net.Dial("tcp", "localhost:5432")
 	if err != nil {
 		panic(err)
 	}
-	err = fe.Run()
+	srv, err := backends.NewServer(conn)
 	if err != nil {
 		panic(err)
 	}
+	_ = srv
 }
diff --git a/lib/backend/server.go b/lib/backend/backend.go
similarity index 60%
rename from lib/backend/server.go
rename to lib/backend/backend.go
index fa3fc900f7903a15fbf514d8246e14a9efab36f1..7d3570acd2b9589b63812f227fb14377bfe60a1c 100644
--- a/lib/backend/server.go
+++ b/lib/backend/backend.go
@@ -2,3 +2,6 @@ package backend
 
 type Server interface {
 }
+
+type Backend interface {
+}
diff --git a/lib/backend/backends/v0/backend.go b/lib/backend/backends/v0/backend.go
new file mode 100644
index 0000000000000000000000000000000000000000..26005af79f36db0c904bf0144065ae1d7fc6341b
--- /dev/null
+++ b/lib/backend/backends/v0/backend.go
@@ -0,0 +1,8 @@
+package backends
+
+import "pggat2/lib/backend"
+
+type Backend struct {
+}
+
+var _ backend.Backend = (*Backend)(nil)
diff --git a/lib/backend/backends/v0/server.go b/lib/backend/backends/v0/server.go
new file mode 100644
index 0000000000000000000000000000000000000000..a9a57af2beffb73b1cd099990ed3f975d9f89f1c
--- /dev/null
+++ b/lib/backend/backends/v0/server.go
@@ -0,0 +1,55 @@
+package backends
+
+import (
+	"log"
+	"net"
+
+	"pggat2/lib/backend"
+	"pggat2/lib/pnet"
+	"pggat2/lib/pnet/packet"
+)
+
+type Server struct {
+	conn net.Conn
+
+	pnet.Reader
+	pnet.Writer
+}
+
+func NewServer(conn net.Conn) (*Server, error) {
+	server := &Server{
+		conn:   conn,
+		Reader: pnet.MakeReader(conn),
+		Writer: pnet.MakeWriter(conn),
+	}
+	err := server.accept()
+	if err != nil {
+		return nil, err
+	}
+	return server, nil
+}
+
+func (T *Server) accept() error {
+	var builder packet.Builder
+	builder.Int16(3)
+	builder.Int16(0)
+	builder.String("user")
+	builder.String("postgres")
+	builder.String("")
+
+	err := T.WriteUntyped(builder.Raw())
+	if err != nil {
+		return err
+	}
+
+	auth, err := T.Read()
+	if err != nil {
+		return err
+	}
+
+	log.Printf("%#v", auth)
+
+	return nil
+}
+
+var _ backend.Server = (*Server)(nil)