adding demo for covariant return type