Combining inheritance and protocols