review code, comments, factor out HasProperties