working on the new implementation