Resolve import locations
diff --git a/client/client.go b/client/client.go
index 8148a7b..ceab57f 100644
--- a/client/client.go
+++ b/client/client.go
@@ -13,13 +13,13 @@
 
 import (
 	"errors"
+	P "git.eclipse.org/gitroot/paho.incubator/smidge.git/packets"
 	"net"
 	"net/url"
-	. "smidge/packets"
 	"sync"
 )
 
-type MessageHandler func(client *SNClient, message *PublishMessage)
+type MessageHandler func(client *SNClient, message *P.PublishMessage)
 
 type Will struct {
 	Topic  string
@@ -41,7 +41,7 @@
 type SNClient struct {
 	sync.RWMutex
 	ClientId                  string
-	OutstandingMessages       map[uint16]Message
+	OutstandingMessages       map[uint16]P.Message
 	RegisteredTopics          map[string]uint16
 	MessageHandlers           map[uint16]MessageHandler
 	PredefinedTopics          map[string]uint16
@@ -51,7 +51,7 @@
 	will                      Will
 	suTokens                  map[int]Token
 	conn                      net.Conn
-	incoming                  chan Message
+	incoming                  chan P.Message
 	outgoing                  chan *MessageAndToken
 	stop                      chan struct{}
 	state                     byte
@@ -75,7 +75,7 @@
 	c.PredefinedTopics = make(map[string]uint16)
 	c.PredefinedMessageHandlers = make(map[uint16]MessageHandler)
 	c.suTokens = make(map[int]Token)
-	c.incoming = make(chan Message)
+	c.incoming = make(chan P.Message)
 	c.outgoing = make(chan *MessageAndToken)
 	c.stop = make(chan struct{})
 	c.MessageIds.index = make(map[uint16]Token)
@@ -94,9 +94,9 @@
 
 func (c *SNClient) Connect() *ConnectToken {
 	c.setState(CONNECTING)
-	ct := newToken(CONNECT).(*ConnectToken)
-	c.suTokens[CONNECT] = ct
-	cp := NewMessage(CONNECT).(*ConnectMessage)
+	ct := newToken(P.CONNECT).(*ConnectToken)
+	c.suTokens[P.CONNECT] = ct
+	cp := P.NewMessage(P.CONNECT).(*P.ConnectMessage)
 	cp.CleanSession = true
 	cp.ClientId = []byte(c.ClientId)
 	cp.Duration = 30
@@ -118,19 +118,19 @@
 }
 
 func (c *SNClient) Register(topic string) *RegisterToken {
-	t := newToken(REGISTER).(*RegisterToken)
+	t := newToken(P.REGISTER).(*RegisterToken)
 	t.TopicName = topic
-	r := NewMessage(REGISTER).(*RegisterMessage)
+	r := P.NewMessage(P.REGISTER).(*P.RegisterMessage)
 	r.TopicName = []byte(topic)
 	c.outgoing <- &MessageAndToken{m: r, t: t}
 	return t
 }
 
 func (c *SNClient) Subscribe(topic string, qos byte, mh MessageHandler) *SubscribeToken {
-	t := newToken(SUBSCRIBE).(*SubscribeToken)
+	t := newToken(P.SUBSCRIBE).(*SubscribeToken)
 	t.handler = mh
 	t.TopicName = topic
-	s := NewMessage(SUBSCRIBE).(*SubscribeMessage)
+	s := P.NewMessage(P.SUBSCRIBE).(*P.SubscribeMessage)
 	if len(topic) > 2 {
 		s.TopicIdType = 0x00
 		t.topicType = 0x00
@@ -145,10 +145,10 @@
 }
 
 func (c *SNClient) SubscribePredefined(topicid uint16, qos byte, mh MessageHandler) *SubscribeToken {
-	t := newToken(SUBSCRIBE).(*SubscribeToken)
+	t := newToken(P.SUBSCRIBE).(*SubscribeToken)
 	t.handler = mh
 	t.topicType = 0x01
-	s := NewMessage(SUBSCRIBE).(*SubscribeMessage)
+	s := P.NewMessage(P.SUBSCRIBE).(*P.SubscribeMessage)
 	s.TopicIdType = 0x01
 	s.TopicId = topicid
 	s.Qos = qos
@@ -157,8 +157,8 @@
 }
 
 func (c *SNClient) Publish(topic string, qos byte, retain bool, data []byte) *PublishToken {
-	t := newToken(PUBLISH).(*PublishToken)
-	p := NewMessage(PUBLISH).(*PublishMessage)
+	t := newToken(P.PUBLISH).(*PublishToken)
+	p := P.NewMessage(P.PUBLISH).(*P.PublishMessage)
 	p.TopicId = c.RegisteredTopics[topic]
 	p.Qos = qos
 	p.Retain = retain
@@ -168,8 +168,8 @@
 }
 
 func (c *SNClient) PublishPredefined(topicid uint16, qos byte, retain bool, data []byte) *PublishToken {
-	t := newToken(PUBLISH).(*PublishToken)
-	p := NewMessage(PUBLISH).(*PublishMessage)
+	t := newToken(P.PUBLISH).(*PublishToken)
+	p := P.NewMessage(P.PUBLISH).(*P.PublishMessage)
 	p.TopicIdType = 0x01
 	p.TopicId = topicid
 	p.Qos = qos
@@ -189,9 +189,9 @@
 
 func (c *SNClient) SetWillTopic(t string) *WillToken {
 	c.will.Topic = t
-	wt := newToken(WILLTOPIC).(*WillToken)
+	wt := newToken(P.WILLTOPIC).(*WillToken)
 	if c.state != UNCONNECTED {
-		wm := NewMessage(WILLTOPICUPD).(*WillTopicUpdateMessage)
+		wm := P.NewMessage(P.WILLTOPICUPD).(*P.WillTopicUpdateMessage)
 		wm.Qos = c.will.Qos
 		wm.Retain = c.will.Retain
 		c.outgoing <- &MessageAndToken{m: wm, t: wt}
@@ -203,9 +203,9 @@
 
 func (c *SNClient) SetWillQos(q byte) *WillToken {
 	c.will.Qos = q
-	wt := newToken(WILLTOPIC).(*WillToken)
+	wt := newToken(P.WILLTOPIC).(*WillToken)
 	if c.state != UNCONNECTED {
-		wm := NewMessage(WILLTOPICUPD).(*WillTopicUpdateMessage)
+		wm := P.NewMessage(P.WILLTOPICUPD).(*P.WillTopicUpdateMessage)
 		wm.Qos = c.will.Qos
 		wm.Retain = c.will.Retain
 		c.outgoing <- &MessageAndToken{m: wm, t: wt}
@@ -217,9 +217,9 @@
 
 func (c *SNClient) SetWillRetain(r bool) *WillToken {
 	c.will.Retain = r
-	wt := newToken(WILLTOPIC).(*WillToken)
+	wt := newToken(P.WILLTOPIC).(*WillToken)
 	if c.state != UNCONNECTED {
-		wm := NewMessage(WILLTOPICUPD).(*WillTopicUpdateMessage)
+		wm := P.NewMessage(P.WILLTOPICUPD).(*P.WillTopicUpdateMessage)
 		wm.Qos = c.will.Qos
 		wm.Retain = c.will.Retain
 		c.outgoing <- &MessageAndToken{m: wm, t: wt}
@@ -232,9 +232,9 @@
 func (c *SNClient) SetWillData(d []byte) *WillToken {
 	c.will.Data = make([]byte, len(d))
 	copy(c.will.Data, d)
-	wt := newToken(WILLMSGUPD).(*WillToken)
+	wt := newToken(P.WILLMSGUPD).(*WillToken)
 	if c.state != UNCONNECTED {
-		wm := NewMessage(WILLMSGUPD).(*WillMsgUpdateMessage)
+		wm := P.NewMessage(P.WILLMSGUPD).(*P.WillMsgUpdateMessage)
 		c.outgoing <- &MessageAndToken{m: wm, t: wt}
 		return wt
 	}
diff --git a/client/net.go b/client/net.go
index c45cbbf..759afb4 100644
--- a/client/net.go
+++ b/client/net.go
@@ -12,19 +12,19 @@
 package smidge
 
 import (
-	. "smidge/packets"
+	P "git.eclipse.org/gitroot/paho.incubator/smidge.git/packets"
 )
 
 func (c *SNClient) receive() {
 	var err error
-	var m Message
+	var m P.Message
 
 	DEBUG.Println(NET, "started receive()")
 	for {
-		if m, err = ReadPacket(c.conn); err != nil {
+		if m, err = P.ReadPacket(c.conn); err != nil {
 			break
 		}
-		DEBUG.Println(NET, "Received", MessageNames[m.MessageType()])
+		DEBUG.Println(NET, "Received", P.MessageNames[m.MessageType()])
 		c.incoming <- m
 	}
 
@@ -41,19 +41,19 @@
 	DEBUG.Println(NET, "started send()")
 	for {
 		mt := <-c.outgoing
-		DEBUG.Println(NET, "sending message", MessageNames[mt.m.MessageType()])
+		DEBUG.Println(NET, "sending message", P.MessageNames[mt.m.MessageType()])
 		switch mt.m.MessageType() {
-		case REGISTER:
-			mt.m.(*RegisterMessage).MessageId = c.MessageIds.getId(mt.t)
-		case PUBLISH:
-			mt.m.(*PublishMessage).MessageId = c.MessageIds.getId(mt.t)
-		case SUBSCRIBE:
-			mt.m.(*SubscribeMessage).MessageId = c.MessageIds.getId(mt.t)
-		case UNSUBSCRIBE:
-			mt.m.(*UnsubscribeMessage).MessageId = c.MessageIds.getId(mt.t)
+		case P.REGISTER:
+			mt.m.(*P.RegisterMessage).MessageId = c.MessageIds.getId(mt.t)
+		case P.PUBLISH:
+			mt.m.(*P.PublishMessage).MessageId = c.MessageIds.getId(mt.t)
+		case P.SUBSCRIBE:
+			mt.m.(*P.SubscribeMessage).MessageId = c.MessageIds.getId(mt.t)
+		case P.UNSUBSCRIBE:
+			mt.m.(*P.UnsubscribeMessage).MessageId = c.MessageIds.getId(mt.t)
 		}
 		mt.m.Write(c.conn)
-		if mt.m.MessageType() == DISCONNECT {
+		if mt.m.MessageType() == P.DISCONNECT {
 			DEBUG.Println(NET, "Sent DISCONNECT, closing connection")
 			c.conn.Close()
 			return
@@ -66,28 +66,28 @@
 	for {
 		select {
 		case m := <-c.incoming:
-			DEBUG.Println(NET, "got message off <-incoming", MessageNames[m.MessageType()])
+			DEBUG.Println(NET, "got message off <-incoming", P.MessageNames[m.MessageType()])
 			switch m.MessageType() {
-			case CONNACK:
-				ca := m.(*ConnackMessage)
+			case P.CONNACK:
+				ca := m.(*P.ConnackMessage)
 				c.setState(CONNECTED)
-				ct := c.suTokens[CONNECT].(*ConnectToken)
+				ct := c.suTokens[P.CONNECT].(*ConnectToken)
 				ct.ReturnCode = ca.ReturnCode
 				ct.flowComplete()
-			case REGISTER:
-				r := m.(*RegisterMessage)
+			case P.REGISTER:
+				r := m.(*P.RegisterMessage)
 				c.RegisteredTopics[string(r.TopicName)] = r.TopicId
-				ra := NewMessage(REGACK).(*RegackMessage)
+				ra := P.NewMessage(P.REGACK).(*P.RegackMessage)
 				ra.MessageId = r.MessageId
 				ra.TopicId = r.TopicId
-				ra.ReturnCode = ACCEPTED
+				ra.ReturnCode = P.ACCEPTED
 				c.outgoing <- &MessageAndToken{m: ra, t: nil}
-			case REGACK:
-				ra := m.(*RegackMessage)
+			case P.REGACK:
+				ra := m.(*P.RegackMessage)
 				t := c.MessageIds.getToken(ra.MessageId).(*RegisterToken)
 				t.ReturnCode = ra.ReturnCode
 				switch ra.ReturnCode {
-				case ACCEPTED:
+				case P.ACCEPTED:
 					DEBUG.Println(NET, t.TopicName, "registered as", ra.TopicId)
 					c.RegisteredTopics[t.TopicName] = ra.TopicId
 					t.TopicId = ra.TopicId
@@ -95,12 +95,12 @@
 					ERROR.Println(NET, ra.ReturnCode, "for REGISTER for", string(t.TopicName))
 				}
 				t.flowComplete()
-			case SUBACK:
-				sa := m.(*SubackMessage)
+			case P.SUBACK:
+				sa := m.(*P.SubackMessage)
 				t := c.MessageIds.getToken(sa.MessageId).(*SubscribeToken)
 				t.ReturnCode = sa.ReturnCode
 				switch sa.ReturnCode {
-				case ACCEPTED:
+				case P.ACCEPTED:
 					t.Qos = sa.Qos
 					if sa.TopicId > 0x00 {
 						t.TopicId = sa.TopicId
@@ -116,8 +116,8 @@
 					ERROR.Println(NET, sa.ReturnCode, "for SUBSCRIBE to", t.TopicName)
 				}
 				t.flowComplete()
-			case PUBLISH:
-				p := m.(*PublishMessage)
+			case P.PUBLISH:
+				p := m.(*P.PublishMessage)
 				switch p.TopicIdType {
 				case 0x00:
 					if handler, ok := c.MessageHandlers[p.TopicId]; ok {
@@ -128,24 +128,24 @@
 						go c.DefaultMessageHandler(c, p)
 					}
 				}
-			case PUBACK:
-				pa := m.(*PubackMessage)
+			case P.PUBACK:
+				pa := m.(*P.PubackMessage)
 				t := c.MessageIds.getToken(pa.MessageId).(*PublishToken)
 				t.ReturnCode = pa.ReturnCode
 				t.TopicId = pa.TopicId
 				t.flowComplete()
-			case DISCONNECT:
+			case P.DISCONNECT:
 				c.setState(UNCONNECTED)
 				DEBUG.Println(NET, "Received DISCONNECT, closing socket")
 				c.conn.Close()
-			case WILLTOPICREQ:
-				wm := NewMessage(WILLTOPIC).(*WillTopicMessage)
+			case P.WILLTOPICREQ:
+				wm := P.NewMessage(P.WILLTOPIC).(*P.WillTopicMessage)
 				wm.WillTopic = []byte(c.will.Topic)
 				wm.Qos = c.will.Qos
 				wm.Retain = c.will.Retain
 				c.outgoing <- &MessageAndToken{m: wm, t: nil}
-			case WILLMSGREQ:
-				wm := NewMessage(WILLMSG).(*WillMsgMessage)
+			case P.WILLMSGREQ:
+				wm := P.NewMessage(P.WILLMSG).(*P.WillMsgMessage)
 				wm.WillMsg = c.will.Data
 				c.outgoing <- &MessageAndToken{m: wm, t: nil}
 			}
diff --git a/client/samples/simple.go b/client/samples/simple.go
index 542d71c..8d1b9c8 100644
--- a/client/samples/simple.go
+++ b/client/samples/simple.go
@@ -13,10 +13,10 @@
 
 import (
 	"fmt"
+	"git.eclipse.org/gitroot/paho.incubator/smidge.git/client"
+	"git.eclipse.org/gitroot/paho.incubator/smidge.git/packets"
 	"log"
 	"os"
-	"smidge/client"
-	"smidge/packets"
 	"time"
 )
 
diff --git a/client/samples/simple2.go b/client/samples/simple2.go
index 77f8b4d..874c300 100644
--- a/client/samples/simple2.go
+++ b/client/samples/simple2.go
@@ -13,10 +13,10 @@
 
 import (
 	"fmt"
+	"git.eclipse.org/gitroot/paho.incubator/smidge.git/client"
+	"git.eclipse.org/gitroot/paho.incubator/smidge.git/packets"
 	"log"
 	"os"
-	"smidge/client"
-	"smidge/packets"
 	"time"
 )
 
diff --git a/client/token.go b/client/token.go
index 0747ba3..be90f23 100644
--- a/client/token.go
+++ b/client/token.go
@@ -12,12 +12,12 @@
 package smidge
 
 import (
-	. "smidge/packets"
+	P "git.eclipse.org/gitroot/paho.incubator/smidge.git/packets"
 	"time"
 )
 
 type MessageAndToken struct {
-	m Message
+	m P.Message
 	t Token
 }
 
@@ -59,17 +59,17 @@
 
 func newToken(tType byte) Token {
 	switch tType {
-	case CONNECT:
+	case P.CONNECT:
 		return &ConnectToken{baseToken: baseToken{complete: make(chan struct{})}}
-	case REGISTER:
+	case P.REGISTER:
 		return &RegisterToken{baseToken: baseToken{complete: make(chan struct{})}}
-	case SUBSCRIBE:
+	case P.SUBSCRIBE:
 		return &SubscribeToken{baseToken: baseToken{complete: make(chan struct{})}}
-	case PUBLISH:
+	case P.PUBLISH:
 		return &PublishToken{baseToken: baseToken{complete: make(chan struct{})}}
-	case UNSUBSCRIBE:
+	case P.UNSUBSCRIBE:
 		return &UnsubscribeToken{baseToken: baseToken{complete: make(chan struct{})}}
-	case WILLTOPIC, WILLMSG, WILLMSGUPD, WILLTOPICUPD:
+	case P.WILLTOPIC, P.WILLMSG, P.WILLMSGUPD, P.WILLTOPICUPD:
 		return &WillToken{baseToken: baseToken{complete: make(chan struct{})}}
 	}
 	return nil
diff --git a/gateway/gate/aggregatinggateway.go b/gateway/gate/aggregatinggateway.go
index 9020bc0..fa1312b 100644
--- a/gateway/gate/aggregatinggateway.go
+++ b/gateway/gate/aggregatinggateway.go
@@ -22,7 +22,7 @@
 

 	MQTT "git.eclipse.org/gitroot/paho/org.eclipse.paho.mqtt.golang.git"

 

-	. "smidge/packets"

+	P "git.eclipse.org/gitroot/paho.incubator/smidge.git/packets"

 )

 

 type AGateway struct {

@@ -130,7 +130,7 @@
 	topicid := ag.tIndex.getId(msg.Topic())

 	// topicidtype := byte(0x00) // todo: pre-defined (1) and shortname (2)

 	// msgid := uint16(0x00) // todo: what should this be??

-	pm := NewPublishMessage(topicid, 0x00, msg.Payload(), msg.Qos(), 0x00, msg.Retained(), msg.Duplicate())

+	pm := P.NewPublishMessage(topicid, 0x00, msg.Payload(), msg.Qos(), 0x00, msg.Retained(), msg.Duplicate())

 

 	if client.Registered(topicid) {

 		INFO.Printf("client \"%s\" already registered to %d, publish ahoy!\n", client, topicid)

@@ -141,7 +141,7 @@
 		}

 	} else {

 		INFO.Printf("client \"%s\" is not registered to %d, must REGISTER first\n", client, topicid)

-		rm := NewRegisterMessage(topicid, 0x00, []byte(msg.Topic()))

+		rm := P.NewRegisterMessage(topicid, 0x00, []byte(msg.Topic()))

 		client.AddPendingMessage(pm)

 		if err := client.Write(rm); err != nil {

 			ERROR.Printf("error writing REGISTER to \"%s\"\n", client)

@@ -155,82 +155,82 @@
 	INFO.Printf("OnPacket!  - bytes: %s\n", string(buffer[0:nbytes]))

 

 	buf := bytes.NewBuffer(buffer)

-	rawmsg, _ := ReadPacket(buf)

+	rawmsg, _ := P.ReadPacket(buf)

 	INFO.Printf("rawmsg.MessageType(): %s\n", rawmsg.MessageType())

 

 	switch msg := rawmsg.(type) {

-	case *AdvertiseMessage:

+	case *P.AdvertiseMessage:

 		ag.handle_ADVERTISE(msg, addr)

-	case *SearchGwMessage:

+	case *P.SearchGwMessage:

 		ag.handle_SEARCHGW(msg, addr)

-	case *GwInfoMessage:

+	case *P.GwInfoMessage:

 		ag.handle_GWINFO(msg, addr)

-	case *ConnectMessage:

+	case *P.ConnectMessage:

 		ag.handle_CONNECT(msg, con, addr)

-	case *ConnackMessage:

+	case *P.ConnackMessage:

 		ag.handle_CONNACK(msg, addr)

-	case *WillTopicReqMessage:

+	case *P.WillTopicReqMessage:

 		ag.handle_WILLTOPICREQ(msg, addr)

-	case *WillTopicMessage:

+	case *P.WillTopicMessage:

 		ag.handle_WILLTOPIC(msg, addr)

-	case *WillMsgReqMessage:

+	case *P.WillMsgReqMessage:

 		ag.handle_WILLMSGREQ(msg, addr)

-	case *WillMsgMessage:

+	case *P.WillMsgMessage:

 		ag.handle_WILLMSG(msg, addr)

-	case *RegisterMessage:

+	case *P.RegisterMessage:

 		ag.handle_REGISTER(msg, con, addr)

-	case *RegackMessage:

+	case *P.RegackMessage:

 		ag.handle_REGACK(msg, addr)

-	case *PublishMessage:

+	case *P.PublishMessage:

 		ag.handle_PUBLISH(msg, addr)

-	case *PubackMessage:

+	case *P.PubackMessage:

 		ag.handle_PUBACK(msg, addr)

-	case *PubcompMessage:

+	case *P.PubcompMessage:

 		ag.handle_PUBCOMP(msg, addr)

-	case *PubrecMessage:

+	case *P.PubrecMessage:

 		ag.handle_PUBREC(msg, addr)

-	case *PubrelMessage:

+	case *P.PubrelMessage:

 		ag.handle_PUBREL(msg, addr)

-	case *SubscribeMessage:

+	case *P.SubscribeMessage:

 		ag.handle_SUBSCRIBE(msg, con, addr)

-	case *SubackMessage:

+	case *P.SubackMessage:

 		ag.handle_SUBACK(msg, addr)

-	case *UnsubscribeMessage:

+	case *P.UnsubscribeMessage:

 		ag.handle_UNSUBSCRIBE(msg, addr)

-	case *UnsubackMessage:

+	case *P.UnsubackMessage:

 		ag.handle_UNSUBACK(msg, addr)

-	case *PingreqMessage:

+	case *P.PingreqMessage:

 		ag.handle_PINGREQ(msg, con, addr)

-	case *PingrespMessage:

+	case *P.PingrespMessage:

 		ag.handle_PINGRESP(msg, addr)

-	case *DisconnectMessage:

+	case *P.DisconnectMessage:

 		ag.handle_DISCONNECT(msg, addr)

-	case *WillTopicUpdateMessage:

+	case *P.WillTopicUpdateMessage:

 		ag.handle_WILLTOPICUPD(msg, addr)

-	case *WillTopicRespMessage:

+	case *P.WillTopicRespMessage:

 		ag.handle_WILLTOPICRESP(msg, addr)

-	case *WillMsgUpdateMessage:

+	case *P.WillMsgUpdateMessage:

 		ag.handle_WILLMSGUPD(msg, addr)

-	case *WillMsgRespMessage:

+	case *P.WillMsgRespMessage:

 		ag.handle_WILLMSGRESP(msg, addr)

 	default:

 		ERROR.Printf("Unknown Message Type %T\n", msg)

 	}

 }

 

-func (ag *AGateway) handle_ADVERTISE(m *AdvertiseMessage, r *net.UDPAddr) {

+func (ag *AGateway) handle_ADVERTISE(m *P.AdvertiseMessage, r *net.UDPAddr) {

 	INFO.Printf("handle_%s from %v\n", m.MessageType(), r)

 }

 

-func (ag *AGateway) handle_SEARCHGW(m *SearchGwMessage, r *net.UDPAddr) {

+func (ag *AGateway) handle_SEARCHGW(m *P.SearchGwMessage, r *net.UDPAddr) {

 	INFO.Printf("handle_%s from %v\n", m.MessageType(), r)

 }

 

-func (ag *AGateway) handle_GWINFO(m *GwInfoMessage, r *net.UDPAddr) {

+func (ag *AGateway) handle_GWINFO(m *P.GwInfoMessage, r *net.UDPAddr) {

 	INFO.Printf("handle_%s from %v\n", m.MessageType(), r)

 }

 

-func (ag *AGateway) handle_CONNECT(m *ConnectMessage, c *net.UDPConn, r *net.UDPAddr) {

+func (ag *AGateway) handle_CONNECT(m *P.ConnectMessage, c *net.UDPConn, r *net.UDPAddr) {

 	INFO.Printf("handle_%s from %v\n", m.MessageType(), r)

 

 	if clientid, e := validateClientId(m.ClientId); e != nil {

@@ -247,7 +247,7 @@
 		client := NewClient(clientid, c, r)

 		ag.clients.AddClient(client)

 

-		ca := NewMessage(CONNACK).(*ConnackMessage) // todo: 0 ?

+		ca := P.NewMessage(P.CONNACK).(*P.ConnackMessage) // todo: 0 ?

 		ca.ReturnCode = 0

 		if ioerr := client.Write(ca); ioerr != nil {

 			ERROR.Println(ioerr)

@@ -257,27 +257,27 @@
 	}

 }

 

-func (ag *AGateway) handle_CONNACK(m *ConnackMessage, r *net.UDPAddr) {

+func (ag *AGateway) handle_CONNACK(m *P.ConnackMessage, r *net.UDPAddr) {

 	INFO.Printf("handle_%s from %v\n", m.MessageType(), r)

 }

 

-func (ag *AGateway) handle_WILLTOPICREQ(m *WillTopicReqMessage, r *net.UDPAddr) {

+func (ag *AGateway) handle_WILLTOPICREQ(m *P.WillTopicReqMessage, r *net.UDPAddr) {

 	INFO.Printf("handle_%s from %v\n", m.MessageType(), r)

 }

 

-func (ag *AGateway) handle_WILLTOPIC(m *WillTopicMessage, r *net.UDPAddr) {

+func (ag *AGateway) handle_WILLTOPIC(m *P.WillTopicMessage, r *net.UDPAddr) {

 	INFO.Printf("handle_%s from %v\n", m.MessageType(), r)

 }

 

-func (ag *AGateway) handle_WILLMSGREQ(m *WillMsgReqMessage, r *net.UDPAddr) {

+func (ag *AGateway) handle_WILLMSGREQ(m *P.WillMsgReqMessage, r *net.UDPAddr) {

 	INFO.Printf("handle_%s from %v\n", m.MessageType(), r)

 }

 

-func (ag *AGateway) handle_WILLMSG(m *WillMsgMessage, r *net.UDPAddr) {

+func (ag *AGateway) handle_WILLMSG(m *P.WillMsgMessage, r *net.UDPAddr) {

 	INFO.Printf("handle_%s from %v\n", m.MessageType(), r)

 }

 

-func (ag *AGateway) handle_REGISTER(m *RegisterMessage, c *net.UDPConn, r *net.UDPAddr) {

+func (ag *AGateway) handle_REGISTER(m *P.RegisterMessage, c *net.UDPConn, r *net.UDPAddr) {

 	INFO.Printf("handle_%s from %v\n", m.MessageType(), r)

 	topic := string(m.TopicName)

 	INFO.Printf("msg id: %d\n", m.MessageId)

@@ -295,7 +295,7 @@
 

 	INFO.Printf("ag topicid: %d\n", topicid)

 

-	ra := NewRegackMessage(topicid, m.MessageId, 0)

+	ra := P.NewRegackMessage(topicid, m.MessageId, 0)

 	INFO.Printf("ra.MsgId: %d\n", ra.MessageId)

 

 	if err := client.Write(ra); err != nil {

@@ -305,7 +305,7 @@
 	}

 }

 

-func (ag *AGateway) handle_REGACK(m *RegackMessage, r *net.UDPAddr) {

+func (ag *AGateway) handle_REGACK(m *P.RegackMessage, r *net.UDPAddr) {

 	INFO.Printf("handle_%s from %v\n", m.MessageType(), r)

 	// the gateway sends a register when there is a message

 	// that needs to be published, so we do that now

@@ -323,7 +323,7 @@
 	}

 }

 

-func (ag *AGateway) handle_PUBLISH(m *PublishMessage, r *net.UDPAddr) {

+func (ag *AGateway) handle_PUBLISH(m *P.PublishMessage, r *net.UDPAddr) {

 	INFO.Printf("handle_%s from %v\n", m.MessageType(), r)

 

 	INFO.Printf("m.TopicId: %d\n", m.TopicId)

@@ -338,23 +338,23 @@
 	INFO.Println("Message Published")

 }

 

-func (ag *AGateway) handle_PUBACK(m *PubackMessage, r *net.UDPAddr) {

+func (ag *AGateway) handle_PUBACK(m *P.PubackMessage, r *net.UDPAddr) {

 	INFO.Printf("handle_%s from %v\n", m.MessageType(), r)

 }

 

-func (ag *AGateway) handle_PUBCOMP(m *PubcompMessage, r *net.UDPAddr) {

+func (ag *AGateway) handle_PUBCOMP(m *P.PubcompMessage, r *net.UDPAddr) {

 	INFO.Printf("handle_%s from %v\n", m.MessageType(), r)

 }

 

-func (ag *AGateway) handle_PUBREC(m *PubrecMessage, r *net.UDPAddr) {

+func (ag *AGateway) handle_PUBREC(m *P.PubrecMessage, r *net.UDPAddr) {

 	INFO.Printf("handle_%s from %v\n", m.MessageType(), r)

 }

 

-func (ag *AGateway) handle_PUBREL(m *PubrelMessage, r *net.UDPAddr) {

+func (ag *AGateway) handle_PUBREL(m *P.PubrelMessage, r *net.UDPAddr) {

 	INFO.Printf("handle_%s from %v\n", m.MessageType(), r)

 }

 

-func (ag *AGateway) handle_SUBSCRIBE(m *SubscribeMessage, c *net.UDPConn, r *net.UDPAddr) {

+func (ag *AGateway) handle_SUBSCRIBE(m *P.SubscribeMessage, c *net.UDPConn, r *net.UDPAddr) {

 	INFO.Printf("handle_%s from %v\n", m.MessageType(), r)

 	INFO.Printf("m.TopicIdType: %d\n", m.TopicIdType)

 	topic := string(m.TopicName)

@@ -385,7 +385,7 @@
 		}

 		// AG is subscribed at this point

 		client.Register(topicid, topic)

-		suba := NewSubackMessage(topicid, m.MessageId, m.Qos, 0)

+		suba := P.NewSubackMessage(topicid, m.MessageId, m.Qos, 0)

 		var buf bytes.Buffer

 		suba.Write(&buf)

 		if nbytes, err := c.WriteToUDP(buf.Bytes(), r); err != nil {

@@ -396,21 +396,21 @@
 	}

 }

 

-func (ag *AGateway) handle_SUBACK(m *SubackMessage, r *net.UDPAddr) {

+func (ag *AGateway) handle_SUBACK(m *P.SubackMessage, r *net.UDPAddr) {

 	INFO.Printf("handle_%s from %v\n", m.MessageType(), r)

 }

 

-func (ag *AGateway) handle_UNSUBSCRIBE(m *UnsubscribeMessage, r *net.UDPAddr) {

+func (ag *AGateway) handle_UNSUBSCRIBE(m *P.UnsubscribeMessage, r *net.UDPAddr) {

 	INFO.Printf("handle_%s from %v\n", m.MessageType(), r)

 }

 

-func (ag *AGateway) handle_UNSUBACK(m *UnsubackMessage, r *net.UDPAddr) {

+func (ag *AGateway) handle_UNSUBACK(m *P.UnsubackMessage, r *net.UDPAddr) {

 	INFO.Printf("handle_%s from %v\n", m.MessageType(), r)

 }

 

-func (ag *AGateway) handle_PINGREQ(m *PingreqMessage, c *net.UDPConn, r *net.UDPAddr) {

+func (ag *AGateway) handle_PINGREQ(m *P.PingreqMessage, c *net.UDPConn, r *net.UDPAddr) {

 	INFO.Printf("handle_%s from %v\n", m.MessageType(), r)

-	resp := NewMessage(PINGRESP)

+	resp := P.NewMessage(P.PINGRESP)

 

 	var buf bytes.Buffer

 	resp.Write(&buf)

@@ -422,28 +422,28 @@
 	}

 }

 

-func (ag *AGateway) handle_PINGRESP(m *PingrespMessage, r *net.UDPAddr) {

+func (ag *AGateway) handle_PINGRESP(m *P.PingrespMessage, r *net.UDPAddr) {

 	INFO.Printf("handle_%s from %v\n", m.MessageType(), r)

 }

 

-func (ag *AGateway) handle_DISCONNECT(m *DisconnectMessage, r *net.UDPAddr) {

+func (ag *AGateway) handle_DISCONNECT(m *P.DisconnectMessage, r *net.UDPAddr) {

 	INFO.Printf("handle_%s from %v\n", m.MessageType(), r)

 	INFO.Printf("duration: %d\n", m.Duration)

 	// todo: cleanup the client

 }

 

-func (ag *AGateway) handle_WILLTOPICUPD(m *WillTopicUpdateMessage, r *net.UDPAddr) {

+func (ag *AGateway) handle_WILLTOPICUPD(m *P.WillTopicUpdateMessage, r *net.UDPAddr) {

 	INFO.Printf("handle_%s from %v\n", m.MessageType(), r)

 }

 

-func (ag *AGateway) handle_WILLTOPICRESP(m *WillTopicRespMessage, r *net.UDPAddr) {

+func (ag *AGateway) handle_WILLTOPICRESP(m *P.WillTopicRespMessage, r *net.UDPAddr) {

 	INFO.Printf("handle_%s from %v\n", m.MessageType(), r)

 }

 

-func (ag *AGateway) handle_WILLMSGUPD(m *WillMsgUpdateMessage, r *net.UDPAddr) {

+func (ag *AGateway) handle_WILLMSGUPD(m *P.WillMsgUpdateMessage, r *net.UDPAddr) {

 	INFO.Printf("handle_%s from %v\n", m.MessageType(), r)

 }

 

-func (ag *AGateway) handle_WILLMSGRESP(m *WillMsgRespMessage, r *net.UDPAddr) {

+func (ag *AGateway) handle_WILLMSGRESP(m *P.WillMsgRespMessage, r *net.UDPAddr) {

 	INFO.Printf("handle_%s from %v\n", m.MessageType(), r)

 }

diff --git a/gateway/gate/client.go b/gateway/gate/client.go
index 827daa0..788a807 100644
--- a/gateway/gate/client.go
+++ b/gateway/gate/client.go
@@ -17,7 +17,7 @@
 	"net"
 	"sync"
 
-	. "smidge/packets"
+	P "git.eclipse.org/gitroot/paho.incubator/smidge.git/packets"
 )
 
 type SNClient interface {
@@ -30,7 +30,7 @@
 	Conn             *net.UDPConn
 	Address          *net.UDPAddr
 	registeredTopics map[uint16]string
-	pendingMessages  map[uint16]*PublishMessage
+	pendingMessages  map[uint16]*P.PublishMessage
 }
 
 func NewClient(ClientId string, Conn *net.UDPConn, Address *net.UDPAddr) *Client {
@@ -41,11 +41,11 @@
 		Conn,
 		Address,
 		make(map[uint16]string),
-		make(map[uint16]*PublishMessage),
+		make(map[uint16]*P.PublishMessage),
 	}
 }
 
-func (c *Client) Write(m Message) error {
+func (c *Client) Write(m P.Message) error {
 	var buf bytes.Buffer
 	m.Write(&buf)
 	_, e := c.Conn.WriteToUDP(buf.Bytes(), c.Address)
@@ -66,13 +66,13 @@
 	return ok
 }
 
-func (c *Client) AddPendingMessage(p *PublishMessage) {
+func (c *Client) AddPendingMessage(p *P.PublishMessage) {
 	defer c.Unlock()
 	c.Lock()
 	c.pendingMessages[p.TopicId] = p
 }
 
-func (c *Client) FetchPendingMessage(topicId uint16) *PublishMessage {
+func (c *Client) FetchPendingMessage(topicId uint16) *P.PublishMessage {
 	defer c.Unlock()
 	c.Lock()
 	pm := c.pendingMessages[topicId]
diff --git a/gateway/gate/transparentclient.go b/gateway/gate/transparentclient.go
index 07195c4..230ec22 100644
--- a/gateway/gate/transparentclient.go
+++ b/gateway/gate/transparentclient.go
@@ -16,7 +16,7 @@
 	"net"
 	"sync"
 
-	. "smidge/packets"
+	P "git.eclipse.org/gitroot/paho.incubator/smidge.git/packets"
 
 	MQTT "git.eclipse.org/gitroot/paho/org.eclipse.paho.mqtt.golang.git"
 )
@@ -40,7 +40,7 @@
 			Connection,
 			Address,
 			make(map[uint16]string),
-			make(map[uint16]*PublishMessage),
+			make(map[uint16]*P.PublishMessage),
 		},
 		nil,
 		Broker,
@@ -81,7 +81,7 @@
 		tid := tIndex.getId(msg.Topic())
 		// is topicid type always 0 coming out of tIndex ?
 		// todo: msgid is not always 0
-		pm := NewPublishMessage(tid, 0x00, msg.Payload(), msg.Qos(), 0x00, msg.Retained(), msg.Duplicate())
+		pm := P.NewPublishMessage(tid, 0x00, msg.Payload(), msg.Qos(), 0x00, msg.Retained(), msg.Duplicate())
 
 		if err := t.Write(pm); err != nil {
 			ERROR.Println(err)
diff --git a/gateway/gate/transparentgateway.go b/gateway/gate/transparentgateway.go
index 6bedb3b..b3f6fd4 100644
--- a/gateway/gate/transparentgateway.go
+++ b/gateway/gate/transparentgateway.go
@@ -18,7 +18,7 @@
 	"os"
 	"sync"
 
-	. "smidge/packets"
+	P "git.eclipse.org/gitroot/paho.incubator/smidge.git/packets"
 
 	//MQTT "git.eclipse.org/gitroot/paho/org.eclipse.paho.mqtt.golang.git"
 )
@@ -70,80 +70,80 @@
 	INFO.Printf("bytes: %s\n", string(buffer[0:nbytes]))
 
 	buf := bytes.NewBuffer(buffer)
-	rawmsg, _ := ReadPacket(buf)
+	rawmsg, _ := P.ReadPacket(buf)
 
-	INFO.Printf("rawmsg.MessageType(): %s\n", MessageNames[rawmsg.MessageType()])
+	INFO.Printf("rawmsg.MessageType(): %s\n", P.MessageNames[rawmsg.MessageType()])
 
 	switch msg := rawmsg.(type) {
-	case *AdvertiseMessage:
+	case *P.AdvertiseMessage:
 		t.handle_ADVERTISE(msg, addr)
-	case *SearchGwMessage:
+	case *P.SearchGwMessage:
 		t.handle_SEARCHGW(msg, addr)
-	case *GwInfoMessage:
+	case *P.GwInfoMessage:
 		t.handle_GWINFO(msg, addr)
-	case *ConnectMessage:
+	case *P.ConnectMessage:
 		t.handle_CONNECT(msg, con, addr)
-	case *ConnackMessage:
+	case *P.ConnackMessage:
 		t.handle_CONNACK(msg, addr)
-	case *WillTopicReqMessage:
+	case *P.WillTopicReqMessage:
 		t.handle_WILLTOPICREQ(msg, addr)
-	case *WillTopicMessage:
+	case *P.WillTopicMessage:
 		t.handle_WILLTOPIC(msg, addr)
-	case *WillMsgReqMessage:
+	case *P.WillMsgReqMessage:
 		t.handle_WILLMSGREQ(msg, addr)
-	case *WillMsgMessage:
+	case *P.WillMsgMessage:
 		t.handle_WILLMSG(msg, addr)
-	case *RegisterMessage:
+	case *P.RegisterMessage:
 		t.handle_REGISTER(msg, con, addr)
-	case *RegackMessage:
+	case *P.RegackMessage:
 		t.handle_REGACK(msg, addr)
-	case *PublishMessage:
+	case *P.PublishMessage:
 		t.handle_PUBLISH(msg, addr)
-	case *PubackMessage:
+	case *P.PubackMessage:
 		t.handle_PUBACK(msg, addr)
-	case *PubcompMessage:
+	case *P.PubcompMessage:
 		t.handle_PUBCOMP(msg, addr)
-	case *PubrecMessage:
+	case *P.PubrecMessage:
 		t.handle_PUBREC(msg, addr)
-	case *PubrelMessage:
+	case *P.PubrelMessage:
 		t.handle_PUBREL(msg, addr)
-	case *SubscribeMessage:
+	case *P.SubscribeMessage:
 		t.handle_SUBSCRIBE(msg, addr)
-	case *SubackMessage:
+	case *P.SubackMessage:
 		t.handle_SUBACK(msg, addr)
-	case *UnsubackMessage:
+	case *P.UnsubackMessage:
 		t.handle_UNSUBACK(msg, addr)
-	case *PingreqMessage:
+	case *P.PingreqMessage:
 		t.handle_PINGREQ(msg, con, addr)
-	case *DisconnectMessage:
+	case *P.DisconnectMessage:
 		t.handle_DISCONNECT(msg, addr)
-	case *WillTopicUpdateMessage:
+	case *P.WillTopicUpdateMessage:
 		t.handle_WILLTOPICUPD(msg, addr)
-	case *WillTopicRespMessage:
+	case *P.WillTopicRespMessage:
 		t.handle_WILLTOPICRESP(msg, addr)
-	case *WillMsgUpdateMessage:
+	case *P.WillMsgUpdateMessage:
 		t.handle_WILLMSGUPD(msg, addr)
-	case *WillMsgRespMessage:
+	case *P.WillMsgRespMessage:
 		t.handle_WILLMSGRESP(msg, addr)
 	default:
 		ERROR.Printf("Unknown Message Type %T\n", msg)
 	}
 }
 
-func (t *TGateway) handle_ADVERTISE(m *AdvertiseMessage, a *net.UDPAddr) {
-	INFO.Printf("handle_%s from %v\n", MessageNames[m.MessageType()], a)
+func (t *TGateway) handle_ADVERTISE(m *P.AdvertiseMessage, a *net.UDPAddr) {
+	INFO.Printf("handle_%s from %v\n", P.MessageNames[m.MessageType()], a)
 }
 
-func (t *TGateway) handle_SEARCHGW(m *SearchGwMessage, a *net.UDPAddr) {
-	INFO.Printf("handle_%s from %v\n", MessageNames[m.MessageType()], a)
+func (t *TGateway) handle_SEARCHGW(m *P.SearchGwMessage, a *net.UDPAddr) {
+	INFO.Printf("handle_%s from %v\n", P.MessageNames[m.MessageType()], a)
 }
 
-func (t *TGateway) handle_GWINFO(m *GwInfoMessage, a *net.UDPAddr) {
-	INFO.Printf("handle_%s from %v\n", MessageNames[m.MessageType()], a)
+func (t *TGateway) handle_GWINFO(m *P.GwInfoMessage, a *net.UDPAddr) {
+	INFO.Printf("handle_%s from %v\n", P.MessageNames[m.MessageType()], a)
 }
 
-func (t *TGateway) handle_CONNECT(m *ConnectMessage, c *net.UDPConn, a *net.UDPAddr) {
-	INFO.Printf("handle_%s from %v\n", MessageNames[m.MessageType()], a)
+func (t *TGateway) handle_CONNECT(m *P.ConnectMessage, c *net.UDPConn, a *net.UDPAddr) {
+	INFO.Printf("handle_%s from %v\n", P.MessageNames[m.MessageType()], a)
 	INFO.Println(m.ProtocolId, m.Duration, m.ClientId)
 	if clientid, err := validateClientId(m.ClientId); err != nil {
 		ERROR.Println(err)
@@ -161,7 +161,7 @@
 
 			// establish connection to mqtt broker
 
-			ca := NewMessage(CONNACK).(*ConnackMessage)
+			ca := P.NewMessage(P.CONNACK).(*P.ConnackMessage)
 			ca.ReturnCode = 0
 			if err = tClient.Write(ca); err != nil {
 				ERROR.Println(err)
@@ -172,28 +172,28 @@
 	}
 }
 
-func (t *TGateway) handle_CONNACK(m *ConnackMessage, r *net.UDPAddr) {
-	INFO.Printf("handle_%s from %v\n", MessageNames[m.MessageType()], r)
+func (t *TGateway) handle_CONNACK(m *P.ConnackMessage, r *net.UDPAddr) {
+	INFO.Printf("handle_%s from %v\n", P.MessageNames[m.MessageType()], r)
 }
 
-func (t *TGateway) handle_WILLTOPICREQ(m *WillTopicReqMessage, r *net.UDPAddr) {
-	INFO.Printf("handle_%s from %v\n", MessageNames[m.MessageType()], r)
+func (t *TGateway) handle_WILLTOPICREQ(m *P.WillTopicReqMessage, r *net.UDPAddr) {
+	INFO.Printf("handle_%s from %v\n", P.MessageNames[m.MessageType()], r)
 }
 
-func (t *TGateway) handle_WILLTOPIC(m *WillTopicMessage, r *net.UDPAddr) {
-	INFO.Printf("handle_%s from %v\n", MessageNames[m.MessageType()], r)
+func (t *TGateway) handle_WILLTOPIC(m *P.WillTopicMessage, r *net.UDPAddr) {
+	INFO.Printf("handle_%s from %v\n", P.MessageNames[m.MessageType()], r)
 }
 
-func (t *TGateway) handle_WILLMSGREQ(m *WillMsgReqMessage, r *net.UDPAddr) {
-	INFO.Printf("handle_%s from %v\n", MessageNames[m.MessageType()], r)
+func (t *TGateway) handle_WILLMSGREQ(m *P.WillMsgReqMessage, r *net.UDPAddr) {
+	INFO.Printf("handle_%s from %v\n", P.MessageNames[m.MessageType()], r)
 }
 
-func (t *TGateway) handle_WILLMSG(m *WillMsgMessage, r *net.UDPAddr) {
-	INFO.Printf("handle_%s from %v\n", MessageNames[m.MessageType()], r)
+func (t *TGateway) handle_WILLMSG(m *P.WillMsgMessage, r *net.UDPAddr) {
+	INFO.Printf("handle_%s from %v\n", P.MessageNames[m.MessageType()], r)
 }
 
-func (t *TGateway) handle_REGISTER(m *RegisterMessage, c *net.UDPConn, r *net.UDPAddr) {
-	INFO.Printf("handle_%s from %v\n", MessageNames[m.MessageType()], r)
+func (t *TGateway) handle_REGISTER(m *P.RegisterMessage, c *net.UDPConn, r *net.UDPAddr) {
+	INFO.Printf("handle_%s from %v\n", P.MessageNames[m.MessageType()], r)
 	topic := string(m.TopicName)
 	var topicid uint16
 	if !t.tIndex.containsTopic(topic) {
@@ -207,7 +207,7 @@
 	tclient := t.clients.GetClient(r).(*TClient)
 	tclient.Register(topicid, topic)
 
-	ra := NewRegackMessage(topicid, m.MessageId, 0)
+	ra := P.NewRegackMessage(topicid, m.MessageId, 0)
 	INFO.Printf("ra.Msgid: %d\n", ra.MessageId)
 
 	if err := tclient.Write(ra); err != nil {
@@ -217,12 +217,12 @@
 	}
 }
 
-func (t *TGateway) handle_REGACK(m *RegackMessage, a *net.UDPAddr) {
-	INFO.Printf("handle_%s from %v\n", MessageNames[m.MessageType()], a)
+func (t *TGateway) handle_REGACK(m *P.RegackMessage, a *net.UDPAddr) {
+	INFO.Printf("handle_%s from %v\n", P.MessageNames[m.MessageType()], a)
 }
 
-func (t *TGateway) handle_PUBLISH(m *PublishMessage, a *net.UDPAddr) {
-	INFO.Printf("handle_%s from %v\n", MessageNames[m.MessageType()], a)
+func (t *TGateway) handle_PUBLISH(m *P.PublishMessage, a *net.UDPAddr) {
+	INFO.Printf("handle_%s from %v\n", P.MessageNames[m.MessageType()], a)
 	tclient := t.clients.GetClient(a).(*TClient)
 
 	topic := t.tIndex.getTopic(m.TopicId)
@@ -235,24 +235,24 @@
 	INFO.Println("PUBLISH published")
 }
 
-func (t *TGateway) handle_PUBACK(m *PubackMessage, r *net.UDPAddr) {
-	INFO.Printf("handle_%s from %v\n", MessageNames[m.MessageType()], r)
+func (t *TGateway) handle_PUBACK(m *P.PubackMessage, r *net.UDPAddr) {
+	INFO.Printf("handle_%s from %v\n", P.MessageNames[m.MessageType()], r)
 }
 
-func (t *TGateway) handle_PUBCOMP(m *PubcompMessage, r *net.UDPAddr) {
-	INFO.Printf("handle_%s from %v\n", MessageNames[m.MessageType()], r)
+func (t *TGateway) handle_PUBCOMP(m *P.PubcompMessage, r *net.UDPAddr) {
+	INFO.Printf("handle_%s from %v\n", P.MessageNames[m.MessageType()], r)
 }
 
-func (t *TGateway) handle_PUBREC(m *PubrecMessage, r *net.UDPAddr) {
-	INFO.Printf("handle_%s from %v\n", MessageNames[m.MessageType()], r)
+func (t *TGateway) handle_PUBREC(m *P.PubrecMessage, r *net.UDPAddr) {
+	INFO.Printf("handle_%s from %v\n", P.MessageNames[m.MessageType()], r)
 }
 
-func (t *TGateway) handle_PUBREL(m *PubrelMessage, r *net.UDPAddr) {
-	INFO.Printf("handle_%s from %v\n", MessageNames[m.MessageType()], r)
+func (t *TGateway) handle_PUBREL(m *P.PubrelMessage, r *net.UDPAddr) {
+	INFO.Printf("handle_%s from %v\n", P.MessageNames[m.MessageType()], r)
 }
 
-func (t *TGateway) handle_SUBSCRIBE(m *SubscribeMessage, r *net.UDPAddr) {
-	INFO.Printf("handle_%s from %v\n", MessageNames[m.MessageType()], r)
+func (t *TGateway) handle_SUBSCRIBE(m *P.SubscribeMessage, r *net.UDPAddr) {
+	INFO.Printf("handle_%s from %v\n", P.MessageNames[m.MessageType()], r)
 	topic := ""
 	if m.TopicIdType == 0 { // todo: other topic id types, also use enum
 		topic = string(m.TopicName)
@@ -264,7 +264,7 @@
 	INFO.Printf("subscribe, qos: %d, topic: %s\n", m.Qos, topic)
 	tclient.subscribeMQTT(m.Qos, topic, &t.tIndex)
 
-	suba := NewSubackMessage(0, m.MessageId, m.Qos, 0)
+	suba := P.NewSubackMessage(0, m.MessageId, m.Qos, 0)
 
 	if err := tclient.Write(suba); err != nil {
 		ERROR.Println(err)
@@ -273,23 +273,23 @@
 	}
 }
 
-func (t *TGateway) handle_SUBACK(m *SubackMessage, r *net.UDPAddr) {
-	INFO.Printf("handle_%s from %v\n", MessageNames[m.MessageType()], r)
+func (t *TGateway) handle_SUBACK(m *P.SubackMessage, r *net.UDPAddr) {
+	INFO.Printf("handle_%s from %v\n", P.MessageNames[m.MessageType()], r)
 }
 
-func (t *TGateway) handle_UNSUBSCRIBE(m *UnsubscribeMessage, r *net.UDPAddr) {
-	INFO.Printf("handle_%s from %v\n", MessageNames[m.MessageType()], r)
+func (t *TGateway) handle_UNSUBSCRIBE(m *P.UnsubscribeMessage, r *net.UDPAddr) {
+	INFO.Printf("handle_%s from %v\n", P.MessageNames[m.MessageType()], r)
 }
 
-func (t *TGateway) handle_UNSUBACK(m *UnsubackMessage, r *net.UDPAddr) {
-	INFO.Printf("handle_%s from %v\n", MessageNames[m.MessageType()], r)
+func (t *TGateway) handle_UNSUBACK(m *P.UnsubackMessage, r *net.UDPAddr) {
+	INFO.Printf("handle_%s from %v\n", P.MessageNames[m.MessageType()], r)
 }
 
-func (t *TGateway) handle_PINGREQ(m *PingreqMessage, c *net.UDPConn, a *net.UDPAddr) {
-	INFO.Printf("handle_%s from %v\n", MessageNames[m.MessageType()], a)
+func (t *TGateway) handle_PINGREQ(m *P.PingreqMessage, c *net.UDPConn, a *net.UDPAddr) {
+	INFO.Printf("handle_%s from %v\n", P.MessageNames[m.MessageType()], a)
 	tclient := t.clients.GetClient(a).(*TClient)
 
-	resp := NewMessage(PINGRESP)
+	resp := P.NewMessage(P.PINGRESP)
 
 	if err := tclient.Write(resp); err != nil {
 		ERROR.Println(err)
@@ -298,29 +298,29 @@
 	}
 }
 
-func (t *TGateway) handle_PINGRESP(m *PingrespMessage, a *net.UDPAddr) {
-	INFO.Printf("handle_%s from %v\n", MessageNames[m.MessageType()], a)
+func (t *TGateway) handle_PINGRESP(m *P.PingrespMessage, a *net.UDPAddr) {
+	INFO.Printf("handle_%s from %v\n", P.MessageNames[m.MessageType()], a)
 }
 
-func (t *TGateway) handle_DISCONNECT(m *DisconnectMessage, r *net.UDPAddr) {
-	INFO.Printf("handle_%s from %v\n", MessageNames[m.MessageType()], r)
+func (t *TGateway) handle_DISCONNECT(m *P.DisconnectMessage, r *net.UDPAddr) {
+	INFO.Printf("handle_%s from %v\n", P.MessageNames[m.MessageType()], r)
 	tclient := t.clients.GetClient(r).(*TClient)
 	tclient.disconnectMQTT()
 	t.clients.RemoveClient(tclient.ClientId)
 }
 
-func (t *TGateway) handle_WILLTOPICUPD(m *WillTopicUpdateMessage, r *net.UDPAddr) {
-	INFO.Printf("handle_%s from %v\n", MessageNames[m.MessageType()], r)
+func (t *TGateway) handle_WILLTOPICUPD(m *P.WillTopicUpdateMessage, r *net.UDPAddr) {
+	INFO.Printf("handle_%s from %v\n", P.MessageNames[m.MessageType()], r)
 }
 
-func (t *TGateway) handle_WILLTOPICRESP(m *WillTopicRespMessage, r *net.UDPAddr) {
-	INFO.Printf("handle_%s from %v\n", MessageNames[m.MessageType()], r)
+func (t *TGateway) handle_WILLTOPICRESP(m *P.WillTopicRespMessage, r *net.UDPAddr) {
+	INFO.Printf("handle_%s from %v\n", P.MessageNames[m.MessageType()], r)
 }
 
-func (t *TGateway) handle_WILLMSGUPD(m *WillMsgUpdateMessage, r *net.UDPAddr) {
-	INFO.Printf("handle_%s from %v\n", MessageNames[m.MessageType()], r)
+func (t *TGateway) handle_WILLMSGUPD(m *P.WillMsgUpdateMessage, r *net.UDPAddr) {
+	INFO.Printf("handle_%s from %v\n", P.MessageNames[m.MessageType()], r)
 }
 
-func (t *TGateway) handle_WILLMSGRESP(m *WillMsgRespMessage, r *net.UDPAddr) {
-	INFO.Printf("handle_%s from %v\n", MessageNames[m.MessageType()], r)
+func (t *TGateway) handle_WILLMSGRESP(m *P.WillMsgRespMessage, r *net.UDPAddr) {
+	INFO.Printf("handle_%s from %v\n", P.MessageNames[m.MessageType()], r)
 }
diff --git a/gateway/gateway.go b/gateway/gateway.go
index fb85c06..215b205 100644
--- a/gateway/gateway.go
+++ b/gateway/gateway.go
@@ -17,7 +17,7 @@
 	"os"
 	"os/signal"
 
-	G "smidge/gateway/gate"
+	G "git.eclipse.org/gitroot/paho.incubator/smidge.git/gateway/gate"
 )
 
 func main() {