Best practices: initializers return instancetype instead of id