clean slate refactor from iCompREpro