requirements
time() functions