added comments
passing tests