reimplent template get_port<> in module
add distributor interface and partial implementation