Improved separation of concerns and introduced $q