nooo, don't use nanoTime directly, abstract the actual clock implementation out into a method so it can be stubbed out for tests