reviewed and updated domain layer #111