added step 5. abstracted. new views. etc.