split time and date into two new models; refactor some code
split tests into two - one for date and one for time