rewrite using setTimeout approach, add setDate and getDate methods
add specs