initializer pattern which covers the 3 possibilities: 1) returns self (what happens the VAST majority of the time). 2) returns nil (something went horribly wrong). 3) returns an instance of a different class (rare). - Your super class may fail to initialize. - If self is nil, and you don’t return nil, you will crash, returning nil allows you to fail gracefully.