added comments and assertions, minor cleanup