<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def handler(self, operation=None, **kwargs):
 """ In addition to the methods described above, cruddy also provides a generic handler interface. This is mainly useful when you want to wrap a cruddy handler in a Lambda function and then call that Lambda function to access the CRUD capabilities. To call the handler, you simply put all necessary parameters into a Python dictionary and then call the handler with that dict. ``` params = { 'operation': 'create', 'item': {'foo': 'bar', 'fie': 'baz'} } response = crud.handler(**params) ``` """

        response = self._new_response()
        if operation is None:
            response.status = 'error'
            response.error_type = 'MissingOperation'
            response.error_message = 'You must pass an operation'
            return response
        operation = operation.lower()
        self._check_supported_op(operation, response)
        if response.status == 'success':
            method = getattr(self, operation, None)
            if callable(method):
                response = method(**kwargs)
            else:
                response.status == 'error'
                response.error_type = 'NotImplemented'
                msg = 'Operation: {} is not implemented'.format(operation)
                response.error_message = msg
        return response