 		(sku for sku in @skus when sku.available)
 
 	findSelectableSkus: =>
-		selectableArray = @skus[..]
-		for sku, i in selectableArray by -1
+		# copy the skus array and then mutate the copy
+		selectableSkus = @skus[..]
+		for sku, i in selectableSkus by -1
 			match = true
 			for dimension, dimensionValue of @selectedDimensionsMap when dimensionValue isnt undefined
 				skuDimensionValue = sku.dimensions[dimension]
 				if skuDimensionValue isnt dimensionValue
 					match = false
 					continue
-			selectableArray.splice(i, 1) unless match
-			# selectableArray.splice(i, 1) unless match and sku.available
-		return selectableArray
+			selectableSkus.splice(i, 1) unless match
+			# selectableSkus.splice(i, 1) unless match and sku.available
+		return selectableSkus
 
   findAvailableSkus: =>
     (sku for sku in @skus when sku.available is true)

		s = @findSelectableSkus()
		return if s.length is 1 then s[0] else undefined

	resetNextDimensions: (dimensionName) =>
		foundCurrent = false
		for key of @selectedDimensionsMap
			@selectedDimensionsMap[key] = undefined if foundCurrent
			foundCurrent = true if key is dimensionName

	# Renders the DOM elements of the Sku Selector, given the context
	renderSkuSelector: (context) =>

		@selectedDimensionsMap = {}
		@selectedDimensionsMap[dimension] = undefined for dimension in dimensions

		# Object of structure { dimension : [possibility] }
		@uniqueDimensionsMap = @findUniqueDimensions()

	findUniqueDimensions: =>
