diff --git a/README.md b/README.md
index 2b8e20b2..0fff2553 100644
--- a/README.md
+++ b/README.md
@@ -51,11 +51,11 @@ Look at matterbridge.conf.sample for an example
 [IRC]
 server="irc.freenode.net"
 port=6667
+#default no TLS connection to irc server
 UseTLS=false
+#do not check the certificate if we use TLS (allows for selfsigned certificates)
 SkipTLSVerify=true
 nick="matterbot"
-channel="#matterbridge"
-UseSlackCircumfix=false
 #Freenode nickserv
 NickServNick="nickserv"
 #Password for nickserv
@@ -71,9 +71,8 @@ port=9999
 #address the webserver will bind to
 BindAddress="0.0.0.0"
 showjoinpart=true #show irc users joining and parting
-#the token you get from the outgoing webhook in mattermost. If empty no token check will be done.
-#if you use multiple IRC channel (see below, this must be empty!)
-token=yourtokenfrommattermost
+#the token you get from the outgoing webhook in mattermost.
+Token="outgoingwebhooktoken1"
 #disable certificate checking (selfsigned certificates)
 #SkipTLSVerify=true
 #whether to prefix messages from IRC to mattermost with the sender's nick. Useful if username overrides for incoming webhooks isn't enabled on the mattermost server
@@ -86,14 +85,13 @@ NicksPerRow=4
 IgnoreNicks="mmbot spammer2"
 
 #multiple channel config
-#token you can find in your outgoing webhook
-[Token "outgoingwebhooktoken1"] 
-IRCChannel="#off-topic"
-MMChannel="off-topic"
+[Channel "channel1"] 
+IRC="#off-topic"
+mattermost="off-topic"
 
-[Token "outgoingwebhooktoken2"]
-IRCChannel="#testing"
-MMChannel="testing"
+[Channel "testchannel"]
+IRC="#testing"
+mattermost="testing"
 
 [general]
 #request your API key on https://github.com/giphy/GiphyAPI. This is a public beta key
diff --git a/bridge/bridge.go b/bridge/bridge.go
index 25e09694..7f318c3c 100644
--- a/bridge/bridge.go
+++ b/bridge/bridge.go
@@ -69,28 +69,20 @@ func NewBridge(name string, config *Config, kind string) *Bridge {
 	b.kind = kind
 	b.ircNick = b.Config.IRC.Nick
 	b.ircMap = make(map[string]string)
+	b.mmMap = make(map[string]string)
 	b.MMirc.names = make(map[string][]string)
 	b.ircIgnoreNicks = strings.Fields(b.Config.IRC.IgnoreNicks)
 	b.mmIgnoreNicks = strings.Fields(b.Config.Mattermost.IgnoreNicks)
+	for _, val := range b.Config.Channel {
+		b.ircMap[val.IRC] = val.Mattermost
+		b.mmMap[val.Mattermost] = val.IRC
+	}
 	if kind == Legacy {
-		if len(b.Config.Token) > 0 {
-			for _, val := range b.Config.Token {
-				b.ircMap[val.IRCChannel] = val.MMChannel
-			}
-		}
-
 		b.mh = matterhook.New(b.Config.Mattermost.URL,
 			matterhook.Config{Port: b.Config.Mattermost.Port, Token: b.Config.Mattermost.Token,
 				InsecureSkipVerify: b.Config.Mattermost.SkipTLSVerify,
 				BindAddress:        b.Config.Mattermost.BindAddress})
 	} else {
-		b.mmMap = make(map[string]string)
-		if len(b.Config.Channel) > 0 {
-			for _, val := range b.Config.Channel {
-				b.ircMap[val.IRC] = val.Mattermost
-				b.mmMap[val.Mattermost] = val.IRC
-			}
-		}
 		b.mc = matterclient.New(b.Config.Mattermost.Login, b.Config.Mattermost.Password,
 			b.Config.Mattermost.Team, b.Config.Mattermost.Server)
 		b.mc.SkipTLSVerify = b.Config.Mattermost.SkipTLSVerify
@@ -102,10 +94,8 @@ func NewBridge(name string, config *Config, kind string) *Bridge {
 		}
 		flog.mm.Info("Login ok")
 		b.mc.JoinChannel(b.Config.Mattermost.Channel)
-		if len(b.Config.Channel) > 0 {
-			for _, val := range b.Config.Channel {
-				b.mc.JoinChannel(val.Mattermost)
-			}
+		for _, val := range b.Config.Channel {
+			b.mc.JoinChannel(val.Mattermost)
 		}
 		go b.mc.WsReceiver()
 	}
@@ -153,20 +143,9 @@ func (b *Bridge) handleNewConnection(event *irc.Event) {
 
 func (b *Bridge) setupChannels() {
 	i := b.i
-	if b.Config.IRC.Channel != "" {
-		flog.irc.Infof("Joining %s as %s", b.Config.IRC.Channel, b.ircNick)
-		i.Join(b.Config.IRC.Channel)
-	}
-	if b.kind == Legacy {
-		for _, val := range b.Config.Token {
-			flog.irc.Infof("Joining %s as %s", val.IRCChannel, b.ircNick)
-			i.Join(val.IRCChannel)
-		}
-	} else {
-		for _, val := range b.Config.Channel {
-			flog.irc.Infof("Joining %s as %s", val.IRC, b.ircNick)
-			i.Join(val.IRC)
-		}
+	for _, val := range b.Config.Channel {
+		flog.irc.Infof("Joining %s as %s", val.IRC, b.ircNick)
+		i.Join(val.IRC)
 	}
 }
 
@@ -203,6 +182,7 @@ func (b *Bridge) ircNickFormat(nick string) string {
 }
 
 func (b *Bridge) handlePrivMsg(event *irc.Event) {
+	flog.irc.Debugf("handlePrivMsg() %s %s", event.Nick, event.Message)
 	if b.ignoreMessage(event.Nick, event.Message(), "irc") {
 		return
 	}
@@ -307,6 +287,7 @@ func (b *Bridge) SendType(nick string, message string, channel string, mtype str
 			flog.mm.Info(err)
 			return err
 		}
+		flog.mm.Debug("->mattermost channel: ", channel, " ", message)
 		return nil
 	}
 	flog.mm.Debug("->mattermost channel: ", channel, " ", message)
@@ -317,10 +298,11 @@ func (b *Bridge) SendType(nick string, message string, channel string, mtype str
 func (b *Bridge) handleMatterHook(mchan chan *MMMessage) {
 	for {
 		message := b.mh.Receive()
+		flog.mm.Debugf("receiving from matterhook %#v", message)
 		m := &MMMessage{}
 		m.Username = message.UserName
 		m.Text = message.Text
-		m.Channel = message.Token
+		m.Channel = message.ChannelName
 		mchan <- m
 	}
 }
@@ -329,11 +311,11 @@ func (b *Bridge) handleMatterClient(mchan chan *MMMessage) {
 	for message := range b.mc.MessageChan {
 		// do not post our own messages back to irc
 		if message.Raw.Action == "posted" && b.mc.User.Username != message.Username {
+			flog.mm.Debugf("receiving from matterclient %#v", message)
 			m := &MMMessage{}
 			m.Username = message.Username
 			m.Channel = message.Channel
 			m.Text = message.Text
-			flog.mm.Debugf("<-mattermost channel: %s %#v %#v", message.Channel, message.Post, message.Raw)
 			mchan <- m
 		}
 	}
@@ -394,30 +376,15 @@ func (b *Bridge) giphyRandom(query []string) string {
 }
 
 func (b *Bridge) getMMChannel(ircChannel string) string {
-	mmchannel, ok := b.ircMap[ircChannel]
-	if !ok {
-		mmchannel = b.Config.Mattermost.Channel
-	}
+	mmChannel := b.ircMap[ircChannel]
 	if b.kind == Legacy {
-		return mmchannel
+		return mmChannel
 	}
-	return b.mc.GetChannelId(mmchannel, "")
+	return b.mc.GetChannelId(mmChannel, "")
 }
 
-func (b *Bridge) getIRCChannel(channel string) string {
-	if b.kind == Legacy {
-		ircchannel := b.Config.IRC.Channel
-		_, ok := b.Config.Token[channel]
-		if ok {
-			ircchannel = b.Config.Token[channel].IRCChannel
-		}
-		return ircchannel
-	}
-	ircchannel, ok := b.mmMap[channel]
-	if !ok {
-		ircchannel = b.Config.IRC.Channel
-	}
-	return ircchannel
+func (b *Bridge) getIRCChannel(mmChannel string) string {
+	return b.mmMap[mmChannel]
 }
 
 func (b *Bridge) ignoreMessage(nick string, message string, protocol string) bool {
diff --git a/bridge/config.go b/bridge/config.go
index 99f2c7d8..37d3e95c 100644
--- a/bridge/config.go
+++ b/bridge/config.go
@@ -40,10 +40,6 @@ type Config struct {
 		IgnoreNicks            string
 		NoTLS                  bool
 	}
-	Token map[string]*struct {
-		IRCChannel string
-		MMChannel  string
-	}
 	Channel map[string]*struct {
 		IRC        string
 		Mattermost string