added communication module and factory