move output transport code to own package
add output transport factory