updated with passing tests and seperate message send constructor