the intiial implementation