S4 based implementation now passes checks and validation, closes #38
added additional test