Naive Implementation First Iteration
Enhanced Implentation Further will have to add some tests