refactored domain models +tests