Return type should be the self type.