Refactoring, addition of more communication abstraction