new files to abstract communication interface and simplify module code