Move time details into submodule, simplify updating logic