First commit with all code done until now