can send messages, but still working on lists/nested types
intermediate commit
huge monolithic implementation
working draft