Split tranmission api responsibilities into several specific classes