correct prefixes for constants
prefixing private method
use a helper object as delegate instead of making uinavigationcontroller it's own delegate
added block to also replace navigationController:willShow ...
documentation
transposing parameters to put always non-nil one before one that may or may not be nil