Move different transports into their own files
Changes for config and for error handling
Changes to error return values
Move fields out of its own module
Updates to tests
Move some constants out