Index: trunk/Nebulous/lib/Nebulous/Client.pm
===================================================================
--- trunk/Nebulous/lib/Nebulous/Client.pm	(revision 28525)
+++ trunk/Nebulous/lib/Nebulous/Client.pm	(revision 29890)
@@ -379,5 +379,5 @@
         {
             # volume
-            type        => SCALAR,
+            type        => SCALAR|UNDEF,
             optional    => 1,
         },
@@ -401,8 +401,15 @@
         }
 
+        # set the number of user copies to 1 to prevent replication
+        $self->setxattr($key, 'user.copies', 1, 'replace');
+
         if (defined $locations) {
-            my $instances = $self->find_instances($key);
-            if (scalar @$instances < 2) {
-                die "not enough instances";
+            my $instances = $self->find_instances($key, undef, 'find them all');
+            if (scalar @$instances == 1) {
+                # only one instance nothing to do
+                return 0;
+            }
+            if (scalar @$instances == 0) {
+                die "no instances";
             }
             foreach my $victim (@$instances) {
@@ -416,6 +423,10 @@
             # start at one so cull() is called one less time then the # of
             # instances
-            if ($stats->[6] < 2) {
-                die "not enough instances";
+            if ($stats->[6] ==  1) {
+                # only one instance nothing to do
+                return 0;
+            }
+            if ($stats->[6] == 0) {
+                die "no instances";
             }
             for (my $i = 1; $i < $stats->[6]; $i++) {
@@ -439,4 +450,37 @@
 }
 
+sub storage_object_exists
+{
+    my $self = shift;
+
+    # HI!
+
+    my ($key) = validate_pos(@_,
+        {
+            type => SCALAR,
+        },
+    );
+
+    $log->debug( "entered - @_" );
+
+    my $found = 0;
+    eval {
+        my $objects = $self->find_objects($key);
+        if  ($objects) {
+            $found = (scalar @$objects) > 0;
+        }
+    };
+    if ($@) {
+        if ($@ =~ qr/invalid key/) {
+            $self->set_err($@);
+            return;
+        }
+        $log->logdie($@);
+    }
+
+    $log->debug("leaving");
+
+    return $found;
+}
 
 sub lock
