diff --git a/metropolis/node/kubernetes/reconciler/resources_csi.go b/metropolis/node/kubernetes/reconciler/resources_csi.go
index 24939f0..cec00fd 100644
--- a/metropolis/node/kubernetes/reconciler/resources_csi.go
+++ b/metropolis/node/kubernetes/reconciler/resources_csi.go
@@ -35,19 +35,19 @@
 	kubernetes.Interface
 }
 
-func (r resourceCSIDrivers) List(ctx context.Context) ([]string, error) {
+func (r resourceCSIDrivers) List(ctx context.Context) ([]meta.Object, error) {
 	res, err := r.StorageV1().CSIDrivers().List(ctx, listBuiltins)
 	if err != nil {
 		return nil, err
 	}
-	objs := make([]string, len(res.Items))
-	for i, el := range res.Items {
-		objs[i] = el.ObjectMeta.Name
+	objs := make([]meta.Object, len(res.Items))
+	for i := range res.Items {
+		objs[i] = &res.Items[i]
 	}
 	return objs, nil
 }
 
-func (r resourceCSIDrivers) Create(ctx context.Context, el interface{}) error {
+func (r resourceCSIDrivers) Create(ctx context.Context, el meta.Object) error {
 	_, err := r.StorageV1().CSIDrivers().Create(ctx, el.(*storage.CSIDriver), meta.CreateOptions{})
 	return err
 }
@@ -56,10 +56,10 @@
 	return r.StorageV1().CSIDrivers().Delete(ctx, name, meta.DeleteOptions{})
 }
 
-func (r resourceCSIDrivers) Expected() map[string]interface{} {
+func (r resourceCSIDrivers) Expected() []meta.Object {
 	fsGroupPolicy := storage.FileFSGroupPolicy
-	return map[string]interface{}{
-		csiProvisionerName: &storage.CSIDriver{
+	return []meta.Object{
+		&storage.CSIDriver{
 			ObjectMeta: meta.ObjectMeta{
 				Name:   csiProvisionerName,
 				Labels: builtinLabels(nil),
