working on the implementation