Start of converting to covariant return types to maintain proper dynamic type through method chaining