http://stackoverflow.com/questions/23172219/golang-cannot-type-switch-on-non-interface-value
https://golang.org/doc/effective_go.html#interfaces