<p>This method defines parameters at a more abstract level than is actually needed to function correctly,
as the code casts these parameters to more concrete types. Since this method is not derivable, you should 
just define the parameters with the type that is needed.