clean up transmission code, add CRC functionality, add abstractions