def __init__(self, days:int=None, modified_since:int=None, page:int=1):
    """This simulates a factory Method
    """
    self.page = page

    if days is not None:
      self.__start_date = (dt.datetime.now() - dt.timedelta(days=days)).date().strftime('%Y-%m-%d')
      self.__end_date = dt.datetime.now().date().strftime('%Y-%m-%d')
      super(Timesheets, self).__init__(rest_method='GET', reference='timesheets', query_string={"start_date":self.__start_date, "end_date":self.__end_date, "page":self.page})
    else:
      # YYYY-MM-DDThh:mm:ss±hh:mm
      self.__modified_since = (dt.datetime.now() - dt.timedelta(days=modified_since)).date().strftime('%Y-%m-%d') + 'T00:00:00+00:00'
      super(Timesheets, self).__init__(rest_method='GET', reference='timesheets', query_string={"modified_since":self.__modified_since, "page":self.page})

    self.data_transformation = DataTransformation(self.__addTimesheets())
 def __init__(self, page:int=1):
   self.page = str(page)
   super(Jobcodes, self).__init__(rest_method='GET', reference='jobcodes', query_string={"page":self.page})
   self.data_transformation = DataTransformation(self.__addJobcodes())
 def __init__(self, days:int=1):
   super(Payrolls, self).__init__(rest_method='POST', reference='reports/payroll', days=days)
   self.data_transformation = DataTransformation(self.__addPayrolls())