TaskModel and TaskSource are refactored to be more maintainable in case
of future changes.