Moved as much as possible to Date class