First commit with the all the code