Abstracted a few things to prepare for terms/facts/etc modules
- run into a weird inheritance issue:

cannot use type func() chan TextReader as type func() chan interface {}
cannot use type func(TextReader) as type func(interface {})

- got that sinking feeling :( gonna take a breakx