incorporate comments and tests
incorporate comments and tests