refactor and overload date method.