Extending base types to conform to custom protocols