Add a bunch of useful compile warnings
Flag unused parameters
Remove variable name overlaps between scopes
Fix implicit type conversion to be explicit
Use valueForKey: instead of objectForKey: