Encapsulated each step into seperate files