Refactor into seperate files

* add initial test for callback support with telephone duplexer