added defmethod -> defgeneric + defmethod