implement RichDateTime#__new__
refactor functions