Make EpochEngine virtual to abstract different epoch units.
minor change: output kept compatible with commit 3e2b953