add support for move constructor and comment constuctor an assignment and equality