added comments
added new helper classes