First commit with all the code