channel pointers?!
major refactor
merged