Adding generalized type constraints to the required methods