updated class hierarchy.
spec refactoring.
updates.