Rebased the code. Starting from ground minus the implementation