 								for k, v of value
 									multi.sadd @prefix() + key, v
 							else if	value? and typeof value == 'object'
-								multi.del @prefix() + key
+								if overwrite
+									multi.del @prefix() + key
 								multi.hmset @prefix() + key, value
 							else
 								# TODO (value instanceof Boolean || typeof value == 'boolean')


				@keys()
					.then (keys) =>
						prefixedProps = []
						for key in Object.keys(@props)
							prefixedProps.push @prefix() + key
						for key in keys
							if key not in prefixedProps
								multi.del key
						for key, value of @props
							if typeof value == 'string' or typeof value == 'number'
								multi.set @prefix() + key, value


			defer.promise

		save: (overwrite, delete_unknown_keys) ->
			overwrite ?= true 
			delete_unknown_keys ?= false 
			defer = Q.defer()
			
			# hat function that actually saves
