nit: we should really be using performance.now