Final Version - Everything works (or at least should work)!