all times should be stored in utc