Got step 4 working, needs cleanup