 				"""
 			if _.isString(name)
 				properties = {}
-				properties[name] = val
+				properties[name] = cloneDeep(val)
 			if _.isObject(name)
 				properties = name
-			newProps =  _.cloneDeep properties
+			newProps = cloneDeep properties
 			_.assign @_properties, newProps
 
 			@changed.dispatch 'set', newProps

				invariant _.isString(name) or _.isArray(name), "Store.get(...): first parameter should be undefined, a string, or an array of keys."
				val = _.pick @_properties, name
				val = val[name] if _.isString(name)
				val = _.cloneDeep val if _.isObject(val)
			else
				val = _.cloneDeep @_properties
			return val

		set: (name, val) ->

	#			# Do things..
	#			@changed.dispatch()
	###

	cloneDeep = (obj) ->
		return obj unless _.isObject(obj) or _.isArray(obj)
		newObj = null
		if _.isObject(obj)
			newObj = {}
			if obj.clone? and typeof obj.clone is 'function'
				newObj = obj.clone()
			else
				for own key, val of obj
					if _.isObject(val)
						newObj[key] = cloneDeep(val)
					else if _.isArray(val)
						newObj[key] = []
						for arrVal in val
							newObj[key].push cloneDeep(val)
					else
						newObj[key] = val
		else
			newObj = []
			if obj.clone? and typeof obj.clone is 'function'
				newObj = obj.clone()
			else
				newObj.push cloneDeep(val) for val in obj
		return newObj

	class Store

