Protocols, Inheritance, init and  convenience init