enhanced domain models + some cleanup