Refactored domain, cleaner code