put equals* in its own file and add comments