moved transport object up to socket_base_t, pass transport object to session_base_t and stream_engine_t. Created new struct transport_func that has a destroy and cretae transport object function. Modified ctx_t and the transport function map to suit. Still have not fully resolved the problem with object deletion however.