Use more Type::Tiny and simplify date math.
Code re-org.