diff --git a/pyopencl/cffi_cl.py b/pyopencl/cffi_cl.py
index 8f8ce993535a7877bed7f9a619babfd049ac889b..12dd114cd5c23ad3ae26bbbe4a7177ac3cf63b19 100644
--- a/pyopencl/cffi_cl.py
+++ b/pyopencl/cffi_cl.py
@@ -358,11 +358,12 @@ class Kernel(_Common):
     def set_arg(self, arg_index, arg):
         if arg is None:
             _handle_error(_lib.kernel__set_arg_null(self.ptr, arg_index))
-        elif isinstance(arg, MemoryObject):
+        elif isinstance(arg, MemoryObjectHolder):
             _handle_error(_lib.kernel__set_arg_mem(self.ptr, arg_index, arg.ptr))
         elif isinstance(arg, Sampler):
             _handle_error(_lib.kernel__set_arg_sampler(self.ptr, arg_index, arg.ptr))
         else:
+            # todo: how to handle args other than numpy arrays?
             c_buf, size = _c_buffer_from_obj(arg)
             _handle_error(_lib.kernel__set_arg_buf(self.ptr, arg_index, c_buf, size))
 
diff --git a/src/c_wrapper/wrap_cl.cpp b/src/c_wrapper/wrap_cl.cpp
index 19bd9574295e042ce86ff2e8fba216a0408c5585..c427d3f1029bfed5a3b9c3c026cecb44c9281db7 100644
--- a/src/c_wrapper/wrap_cl.cpp
+++ b/src/c_wrapper/wrap_cl.cpp
@@ -2924,7 +2924,7 @@ void _free2(void **p, uint32_t size) {
 }
 
 ::error *kernel__set_arg_mem(void *ptr_kernel, cl_uint arg_index, void *ptr_mem) {
-  pyopencl::memory_object *mem = static_cast<pyopencl::memory_object*>(ptr_mem);
+  pyopencl::memory_object_holder *mem = static_cast<pyopencl::memory_object_holder*>(ptr_mem);
   C_HANDLE_ERROR(static_cast<pyopencl::kernel*>(ptr_kernel)->set_arg_mem(arg_index, *mem););
   return 0;
 }