function icommunicate seperation