api_options = {}
         api_options ['call_id'] = unique_call_id()
+
+        # set the requtested rspec version
+        version_manager = VersionManager()
+        rspec_version = version_manager._get_version('geni', '3.0').to_dict()
+        api_options['geni_rspec_version'] = rspec_version 
         result = server.Provision([slice_urn], creds, api_options)
         value = ReturnValue.get_value(result)
         if self.options.raw:
 
         # make sure geni_rspec_version is specified in options
         if 'geni_rspec_version' not in options:
             msg = 'geni_rspec_version is required and must be set in options struct'
-            raise SfaInvalidArgument('geni_rspec_version', msg
+            raise SfaInvalidArgument(msg, 'geni_rspec_version')
         # make sure we support the requested rspec version
         version_manager = VersionManager()
-        if not version_manager.get(options['geni_rspec_version']):
+        rspec_version = version_manager.get_version(options['geni_rspec_version']) 
+        if not rspec_version:
             raise InvalidRSpecVersion(options['geni_rspec_version'])
                        
         return self.driver.provision(xrns, options)
 
             sliver_hrn = "%s.%s" % (self.driver.hrn, instance.id)
             sliver_ids.append(Xrn(sliver_hrn, type='sliver').urn)
         SliverAllocation.set_allocations(sliver_ids, 'geni_provisioned') 
-            
-        return self.describe(urns, options=options) 
+        version_manager = VersionManager()
+        rspec_version = version_manager.get_version(options['geni_rspec_version'])
+        return self.describe(urns, rspec_version, options=options) 
 
     def delete (self, urns, options={}):
         # collect sliver ids so we can update sliver allocation states after