Moved each step into its own file for cleanliness