diff --git a/examples/acroforms/index.html b/examples/acroforms/index.html
index b91b79c76..5ac3fdc7f 100644
--- a/examples/acroforms/index.html
+++ b/examples/acroforms/index.html
@@ -5,8 +5,6 @@
   <!-- In production, only one script (pdf.js) is necessary -->
   <!-- In production, change the content of PDFJS.workerSrc below -->
   <script src="../../src/shared/util.js"></script>
-  <script src="../../src/shared/colorspace.js"></script>
-  <script src="../../src/shared/function.js"></script>
   <script src="../../src/shared/annotation.js"></script>
   <script src="../../src/display/api.js"></script>
   <script src="../../src/display/metadata.js"></script>
diff --git a/examples/helloworld/index.html b/examples/helloworld/index.html
index 651e6a5a6..b38060bf8 100644
--- a/examples/helloworld/index.html
+++ b/examples/helloworld/index.html
@@ -5,8 +5,6 @@
   <!-- In production, only one script (pdf.js) is necessary -->
   <!-- In production, change the content of PDFJS.workerSrc below -->
   <script src="../../src/shared/util.js"></script>
-  <script src="../../src/shared/colorspace.js"></script>
-  <script src="../../src/shared/function.js"></script>
   <script src="../../src/shared/annotation.js"></script>
   <script src="../../src/display/api.js"></script>
   <script src="../../src/display/metadata.js"></script>
diff --git a/make.js b/make.js
index 2e129a48e..8392bdce9 100644
--- a/make.js
+++ b/make.js
@@ -370,8 +370,6 @@ target.bundle = function(args) {
 
   var SHARED_SRC_FILES = [
     'shared/util.js',
-    'shared/colorspace.js',
-    'shared/function.js',
     'shared/annotation.js',
   ];
 
diff --git a/src/shared/colorspace.js b/src/core/colorspace.js
similarity index 100%
rename from src/shared/colorspace.js
rename to src/core/colorspace.js
diff --git a/src/core/evaluator.js b/src/core/evaluator.js
index 2498d979a..90d26b275 100644
--- a/src/core/evaluator.js
+++ b/src/core/evaluator.js
@@ -131,13 +131,19 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
         };
 
         var groupSubtype = group.get('S');
+        var colorSpace;
         if (isName(groupSubtype) && groupSubtype.name === 'Transparency') {
           groupOptions.isolated = (group.get('I') || false);
           groupOptions.knockout = (group.get('K') || false);
-          var colorSpace = group.get('CS');
-          groupOptions.colorSpace = (colorSpace ?
-            ColorSpace.parseToIR(colorSpace, this.xref, resources) : null);
+          colorSpace = (group.has('CS') ?
+            ColorSpace.parse(group.get('CS'), this.xref, resources) : null);
         }
+
+        if (smask && smask.backdrop) {
+          colorSpace = colorSpace || ColorSpace.singletons.rgb;
+          smask.backdrop = colorSpace.getRgb(smask.backdrop, 0);
+        }
+
         operatorList.addOp(OPS.beginGroup, [groupOptions]);
       }
 
@@ -552,6 +558,36 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
       }
     },
 
+    handleColorN: function PartialEvaluator_handleColorN(operatorList, fn, args,
+          cs, patterns, resources, xref) {
+      // compile tiling patterns
+      var patternName = args[args.length - 1];
+      // SCN/scn applies patterns along with normal colors
+      var pattern;
+      if (isName(patternName) &&
+          (pattern = patterns.get(patternName.name))) {
+        var dict = (isStream(pattern) ? pattern.dict : pattern);
+        var typeNum = dict.get('PatternType');
+
+        if (typeNum == TILING_PATTERN) {
+          var color = cs.base ? cs.base.getRgb(args, 0) : null;
+          return this.handleTilingType(fn, color, resources, pattern,
+                                       dict, operatorList);
+        } else if (typeNum == SHADING_PATTERN) {
+          var shading = dict.get('Shading');
+          var matrix = dict.get('Matrix');
+          pattern = Pattern.parseShading(shading, matrix, xref, resources);
+          operatorList.addOp(fn, pattern.getIR());
+          return Promise.resolve();
+        } else {
+          return Promise.reject('Unknown PatternType: ' + typeNum);
+        }
+      }
+      // TODO shall we fail here?
+      operatorList.addOp(fn, args);
+      return Promise.resolve();
+    },
+
     getOperatorList: function PartialEvaluator_getOperatorList(stream,
                                                                resources,
                                                                operatorList,
@@ -568,49 +604,17 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
       var patterns = (resources.get('Pattern') || Dict.empty);
       var stateManager = new StateManager(initialState || new EvalState());
       var preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);
-      var shading;
       var timeSlotManager = new TimeSlotManager();
 
       return new Promise(function next(resolve, reject) {
         timeSlotManager.reset();
-        var stop, operation, i, ii;
+        var stop, operation, i, ii, cs;
         while (!(stop = timeSlotManager.check()) &&
                (operation = preprocessor.read())) {
           var args = operation.args;
           var fn = operation.fn;
 
           switch (fn | 0) {
-            case OPS.setStrokeColorN:
-            case OPS.setFillColorN:
-              if (args[args.length - 1].code) {
-                break;
-              }
-              // compile tiling patterns
-              var patternName = args[args.length - 1];
-              // SCN/scn applies patterns along with normal colors
-              var pattern;
-              if (isName(patternName) &&
-                  (pattern = patterns.get(patternName.name))) {
-                var dict = (isStream(pattern) ? pattern.dict : pattern);
-                var typeNum = dict.get('PatternType');
-
-                if (typeNum == TILING_PATTERN) {
-                  return self.handleTilingType(fn, args, resources, pattern,
-                                               dict, operatorList).then(
-                    function() {
-                      next(resolve, reject);
-                    }, reject);
-                } else if (typeNum == SHADING_PATTERN) {
-                  shading = dict.get('Shading');
-                  var matrix = dict.get('Matrix');
-                  pattern = Pattern.parseShading(shading, matrix, xref,
-                    resources);
-                  args = pattern.getIR();
-                } else {
-                  error('Unknown PatternType ' + typeNum);
-                }
-              }
-              break;
             case OPS.paintXObject:
               if (args[0].code) {
                 break;
@@ -692,18 +696,83 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
             case OPS.setTextRenderingMode:
               stateManager.state.textRenderingMode = args[0];
               break;
-            // Parse the ColorSpace data to a raw format.
+
             case OPS.setFillColorSpace:
+              stateManager.state.fillColorSpace =
+                ColorSpace.parse(args[0], xref, resources);
+              continue;
             case OPS.setStrokeColorSpace:
-              args = [ColorSpace.parseToIR(args[0], xref, resources)];
+              stateManager.state.strokeColorSpace =
+                ColorSpace.parse(args[0], xref, resources);
+              continue;
+            case OPS.setFillColor:
+              cs = stateManager.state.fillColorSpace;
+              args = cs.getRgb(args, 0);
+              fn = OPS.setFillRGBColor;
+              break;
+            case OPS.setStrokeColor:
+              cs = stateManager.state.strokeColorSpace;
+              args = cs.getRgb(args, 0);
+              fn = OPS.setStrokeRGBColor;
+              break;
+            case OPS.setFillGray:
+              stateManager.state.fillColorSpace = ColorSpace.singletons.gray;
+              args = ColorSpace.singletons.gray.getRgb(args, 0);
+              fn = OPS.setFillRGBColor;
+              break;
+            case OPS.setStrokeGray:
+              stateManager.state.strokeColorSpace = ColorSpace.singletons.gray;
+              args = ColorSpace.singletons.gray.getRgb(args, 0);
+              fn = OPS.setStrokeRGBColor;
+              break;
+            case OPS.setFillCMYKColor:
+              stateManager.state.fillColorSpace = ColorSpace.singletons.cmyk;
+              args = ColorSpace.singletons.cmyk.getRgb(args, 0);
+              fn = OPS.setFillRGBColor;
+              break;
+            case OPS.setStrokeCMYKColor:
+              stateManager.state.strokeColorSpace = ColorSpace.singletons.cmyk;
+              args = ColorSpace.singletons.cmyk.getRgb(args, 0);
+              fn = OPS.setStrokeRGBColor;
+              break;
+            case OPS.setFillRGBColor:
+              stateManager.state.fillColorSpace = ColorSpace.singletons.rgb;
+              args = ColorSpace.singletons.rgb.getRgb(args, 0);
               break;
+            case OPS.setStrokeRGBColor:
+              stateManager.state.strokeColorSpace = ColorSpace.singletons.rgb;
+              args = ColorSpace.singletons.rgb.getRgb(args, 0);
+              break;
+            case OPS.setFillColorN:
+              cs = stateManager.state.fillColorSpace;
+              if (cs.name === 'Pattern') {
+                return self.handleColorN(operatorList, OPS.setFillColorN,
+                  args, cs, patterns, resources, xref).then(function() {
+                    next(resolve, reject);
+                  }, reject);
+              }
+              args = cs.getRgb(args, 0);
+              fn = OPS.setFillRGBColor;
+              break;
+            case OPS.setStrokeColorN:
+              cs = stateManager.state.strokeColorSpace;
+              if (cs.name === 'Pattern') {
+                return self.handleColorN(operatorList, OPS.setStrokeColorN,
+                  args, cs, patterns, resources, xref).then(function() {
+                    next(resolve, reject);
+                  }, reject);
+              }
+              args = cs.getRgb(args, 0);
+              fn = OPS.setStrokeRGBColor;
+              break;
+
             case OPS.shadingFill:
               var shadingRes = resources.get('Shading');
               if (!shadingRes) {
                 error('No shading resource found');
               }
 
-              shading = shadingRes.get(args[0].name);
+              var shading = shadingRes.get(args[0].name);
               if (!shading) {
                 error('No shading object found');
               }
@@ -1840,6 +1909,8 @@ var EvalState = (function EvalStateClosure() {
     this.ctm = new Float32Array(IDENTITY_MATRIX);
     this.font = null;
     this.textRenderingMode = TextRenderingMode.FILL;
+    this.fillColorSpace = ColorSpace.singletons.gray;
+    this.strokeColorSpace = ColorSpace.singletons.gray;
   }
   EvalState.prototype = {
     clone: function CanvasExtraState_clone() {
diff --git a/src/shared/function.js b/src/core/function.js
similarity index 98%
rename from src/shared/function.js
rename to src/core/function.js
index b6e0f3a9c..dd4507c31 100644
--- a/src/shared/function.js
+++ b/src/core/function.js
@@ -14,7 +14,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-/* globals PostScriptLexer, PostScriptParser, error, info, isArray, isBool */
+/* globals PostScriptLexer, PostScriptParser, error, info, isArray, isBool,
+           isDict, isStream */
 
 'use strict';
 
@@ -436,6 +437,20 @@ var PDFFunction = (function PDFFunctionClosure() {
   };
 })();
 
+function isPDFFunction(v) {
+  var fnDict;
+  if (typeof v != 'object') {
+    return false;
+  } else if (isDict(v)) {
+    fnDict = v;
+  } else if (isStream(v)) {
+    fnDict = v.dict;
+  } else {
+    return false;
+  }
+  return fnDict.has('FunctionType');
+}
+
 var PostScriptStack = (function PostScriptStackClosure() {
   var MAX_STACK_SIZE = 100;
   function PostScriptStack(initialStack) {
diff --git a/src/display/canvas.js b/src/display/canvas.js
index 5566caceb..dca61455d 100644
--- a/src/display/canvas.js
+++ b/src/display/canvas.js
@@ -14,11 +14,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-/* globals ColorSpace, DeviceCmykCS, DeviceGrayCS, DeviceRgbCS, error, PDFJS,
+/* globals error, PDFJS, assert, info, shadow, TextRenderingMode,
            FONT_IDENTITY_MATRIX, Uint32ArrayView, IDENTITY_MATRIX, ImageData,
            ImageKind, isArray, isNum, TilingPattern, OPS, Promise, Util, warn,
-           assert, info, shadow, TextRenderingMode, getShadingPatternFromIR,
-           WebGLUtils */
+           getShadingPatternFromIR, WebGLUtils */
 
 'use strict';
 
@@ -366,13 +365,6 @@ var CanvasExtraState = (function CanvasExtraStateClosure() {
     this.textHScale = 1;
     this.textRenderingMode = TextRenderingMode.FILL;
     this.textRise = 0;
-    // Color spaces
-    this.fillColorSpace = ColorSpace.singletons.gray;
-    this.fillColorSpaceObj = null;
-    this.strokeColorSpace = ColorSpace.singletons.gray;
-    this.strokeColorSpaceObj = null;
-    this.fillColorObj = null;
-    this.strokeColorObj = null;
     // Default fore and background colors
     this.fillColor = '#000000';
     this.strokeColor = '#000000';
@@ -673,11 +665,7 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
     ctx.setTransform(smask.scaleX, 0, 0, smask.scaleY,
                      smask.offsetX, smask.offsetY);
 
-    var backdrop;
-    if (smask.backdrop) {
-      var cs = smask.colorSpace || ColorSpace.singletons.rgb;
-      backdrop = cs.getRgb(smask.backdrop, 0);
-    }
+    var backdrop = smask.backdrop || null;
     if (WebGLUtils.isEnabled) {
       var composed = WebGLUtils.composeSMask(layerCtx.canvas, mask,
         {subtype: smask.subtype, backdrop: backdrop});
@@ -1519,28 +1507,10 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
     },
 
     // Color
-    setStrokeColorSpace: function CanvasGraphics_setStrokeColorSpace(raw) {
-      this.current.strokeColorSpace = ColorSpace.fromIR(raw);
-    },
-    setFillColorSpace: function CanvasGraphics_setFillColorSpace(raw) {
-      this.current.fillColorSpace = ColorSpace.fromIR(raw);
-    },
-    setStrokeColor: function CanvasGraphics_setStrokeColor(/*...*/) {
-      var cs = this.current.strokeColorSpace;
-      var rgbColor = cs.getRgb(arguments, 0);
-      var color = Util.makeCssRgb(rgbColor);
-      this.ctx.strokeStyle = color;
-      this.current.strokeColor = color;
-    },
-    getColorN_Pattern: function CanvasGraphics_getColorN_Pattern(IR, cs) {
+    getColorN_Pattern: function CanvasGraphics_getColorN_Pattern(IR) {
       var pattern;
       if (IR[0] == 'TilingPattern') {
-        var args = IR[1];
-        var base = cs.base;
-        var color;
-        if (base) {
-          color = base.getRgb(args, 0);
-        }
+        var color = IR[1];
         pattern = new TilingPattern(IR, color, this.ctx, this.objs,
                                     this.commonObjs, this.baseTransform);
       } else {
@@ -1549,73 +1519,18 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
       return pattern;
     },
     setStrokeColorN: function CanvasGraphics_setStrokeColorN(/*...*/) {
-      var cs = this.current.strokeColorSpace;
-
-      if (cs.name == 'Pattern') {
-        this.current.strokeColor = this.getColorN_Pattern(arguments, cs);
-      } else {
-        this.setStrokeColor.apply(this, arguments);
-      }
-    },
-    setFillColor: function CanvasGraphics_setFillColor(/*...*/) {
-      var cs = this.current.fillColorSpace;
-      var rgbColor = cs.getRgb(arguments, 0);
-      var color = Util.makeCssRgb(rgbColor);
-      this.ctx.fillStyle = color;
-      this.current.fillColor = color;
+      this.current.strokeColor = this.getColorN_Pattern(arguments);
     },
     setFillColorN: function CanvasGraphics_setFillColorN(/*...*/) {
-      var cs = this.current.fillColorSpace;
-
-      if (cs.name == 'Pattern') {
-        this.current.fillColor = this.getColorN_Pattern(arguments, cs);
-      } else {
-        this.setFillColor.apply(this, arguments);
-      }
-    },
-    setStrokeGray: function CanvasGraphics_setStrokeGray(gray) {
-      this.current.strokeColorSpace = ColorSpace.singletons.gray;
-
-      var rgbColor = this.current.strokeColorSpace.getRgb(arguments, 0);
-      var color = Util.makeCssRgb(rgbColor);
-      this.ctx.strokeStyle = color;
-      this.current.strokeColor = color;
-    },
-    setFillGray: function CanvasGraphics_setFillGray(gray) {
-      this.current.fillColorSpace = ColorSpace.singletons.gray;
-
-      var rgbColor = this.current.fillColorSpace.getRgb(arguments, 0);
-      var color = Util.makeCssRgb(rgbColor);
-      this.ctx.fillStyle = color;
-      this.current.fillColor = color;
+      this.current.fillColor = this.getColorN_Pattern(arguments);
     },
     setStrokeRGBColor: function CanvasGraphics_setStrokeRGBColor(r, g, b) {
-      this.current.strokeColorSpace = ColorSpace.singletons.rgb;
-
-      var rgbColor = this.current.strokeColorSpace.getRgb(arguments, 0);
-      var color = Util.makeCssRgb(rgbColor);
+      var color = Util.makeCssRgb(arguments);
       this.ctx.strokeStyle = color;
       this.current.strokeColor = color;
     },
     setFillRGBColor: function CanvasGraphics_setFillRGBColor(r, g, b) {
-      this.current.fillColorSpace = ColorSpace.singletons.rgb;
-
-      var rgbColor = this.current.fillColorSpace.getRgb(arguments, 0);
-      var color = Util.makeCssRgb(rgbColor);
-      this.ctx.fillStyle = color;
-      this.current.fillColor = color;
-    },
-    setStrokeCMYKColor: function CanvasGraphics_setStrokeCMYKColor(c, m, y, k) {
-      this.current.strokeColorSpace = ColorSpace.singletons.cmyk;
-
-      var color = Util.makeCssCmyk(arguments);
-      this.ctx.strokeStyle = color;
-      this.current.strokeColor = color;
-    },
-    setFillCMYKColor: function CanvasGraphics_setFillCMYKColor(c, m, y, k) {
-      this.current.fillColorSpace = ColorSpace.singletons.cmyk;
-
-      var color = Util.makeCssCmyk(arguments);
+      var color = Util.makeCssRgb(arguments);
       this.ctx.fillStyle = color;
       this.current.fillColor = color;
     },
@@ -1774,8 +1689,7 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
           scaleX: scaleX,
           scaleY: scaleY,
           subtype: group.smask.subtype,
-          backdrop: group.smask.backdrop,
-          colorSpace: group.colorSpace && ColorSpace.fromIR(group.colorSpace)
+          backdrop: group.smask.backdrop
         });
       } else {
         // Setup the current ctx so when the group is popped we draw it at the
diff --git a/src/display/pattern_helper.js b/src/display/pattern_helper.js
index d2a8c79f7..2dcf08430 100644
--- a/src/display/pattern_helper.js
+++ b/src/display/pattern_helper.js
@@ -291,7 +291,6 @@ var TilingPattern = (function TilingPatternClosure() {
   var MAX_PATTERN_SIZE = 3000; // 10in @ 300dpi shall be enough
 
   function TilingPattern(IR, color, ctx, objs, commonObjs, baseTransform) {
-    this.name = IR[1][0].name;
     this.operatorList = IR[2];
     this.matrix = IR[3] || [1, 0, 0, 1, 0, 0];
     this.bbox = IR[4];
@@ -401,8 +400,7 @@ var TilingPattern = (function TilingPatternClosure() {
             context.strokeStyle = ctx.strokeStyle;
             break;
           case PaintType.UNCOLORED:
-            var rgbColor = ColorSpace.singletons.rgb.getRgb(color, 0);
-            var cssColor = Util.makeCssRgb(rgbColor);
+            var cssColor = Util.makeCssRgb(color);
             context.fillStyle = cssColor;
             context.strokeStyle = cssColor;
             break;
diff --git a/src/shared/util.js b/src/shared/util.js
index 77d8d4680..3aa2164f5 100644
--- a/src/shared/util.js
+++ b/src/shared/util.js
@@ -531,11 +531,6 @@ var Util = PDFJS.Util = (function UtilClosure() {
     return 'rgb(' + rgb[0] + ',' + rgb[1] + ',' + rgb[2] + ')';
   };
 
-  Util.makeCssCmyk = function Util_makeCssCmyk(cmyk) {
-    var rgb = ColorSpace.singletons.cmyk.getRgb(cmyk, 0);
-    return Util.makeCssRgb(rgb);
-  };
-
   // Concatenates two transformation matrices together and returns the result.
   Util.transform = function Util_transform(m1, m2) {
     return [
@@ -968,20 +963,6 @@ function isRef(v) {
   return v instanceof Ref;
 }
 
-function isPDFFunction(v) {
-  var fnDict;
-  if (typeof v != 'object') {
-    return false;
-  } else if (isDict(v)) {
-    fnDict = v;
-  } else if (isStream(v)) {
-    fnDict = v.dict;
-  } else {
-    return false;
-  }
-  return fnDict.has('FunctionType');
-}
-
 /**
  * Promise Capability object.
  *
diff --git a/src/worker_loader.js b/src/worker_loader.js
index 9cbda7e7b..6a8ddbfd4 100644
--- a/src/worker_loader.js
+++ b/src/worker_loader.js
@@ -21,8 +21,6 @@
 // List of shared files to include;
 var sharedFiles = [
   'shared/util.js',
-  'shared/colorspace.js',
-  'shared/function.js',
   'shared/annotation.js'
 ];
 
@@ -35,6 +33,8 @@ var otherFiles = [
   'core/obj.js',
   'core/charsets.js',
   'core/cidmaps.js',
+  'core/function.js',
+  'core/colorspace.js',
   'core/crypto.js',
   'core/pattern.js',
   'core/evaluator.js',
diff --git a/test/font/font_test.html b/test/font/font_test.html
index 5de571700..743363fbc 100644
--- a/test/font/font_test.html
+++ b/test/font/font_test.html
@@ -22,10 +22,10 @@
   <script src="../../src/display/webgl.js"></script>
   <script src="../../src/core/obj.js"></script>
   <script src="../../src/shared/annotation.js"></script>
-  <script src="../../src/shared/function.js"></script>
+  <script src="../../src/core/function.js"></script>
   <script src="../../src/core/charsets.js"></script>
   <script src="../../src/core/cidmaps.js"></script>
-  <script src="../../src/shared/colorspace.js"></script>
+  <script src="../../src/core/colorspace.js"></script>
   <script src="../../src/core/crypto.js"></script>
   <script src="../../src/core/pattern.js"></script>
   <script src="../../src/core/evaluator.js"></script>
diff --git a/test/test_slave.html b/test/test_slave.html
index f7deb481d..1e03be43c 100644
--- a/test/test_slave.html
+++ b/test/test_slave.html
@@ -20,8 +20,6 @@ limitations under the License.
     <title>pdf.js test slave</title>
     <style type="text/css"></style>
     <script src="/src/shared/util.js"></script>
-    <script src="/src/shared/colorspace.js"></script>
-    <script src="/src/shared/function.js"></script>
     <script src="/src/shared/annotation.js"></script>
     <script src="/src/display/api.js"></script>
     <script src="/src/display/metadata.js"></script>
diff --git a/test/unit/unit_test.html b/test/unit/unit_test.html
index 742f47219..2db04b1e8 100644
--- a/test/unit/unit_test.html
+++ b/test/unit/unit_test.html
@@ -21,10 +21,10 @@
   <script src="../../src/display/webgl.js"></script>
   <script src="../../src/core/obj.js"></script>
   <script src="../../src/shared/annotation.js"></script>
-  <script src="../../src/shared/function.js"></script>
+  <script src="../../src/core/function.js"></script>
   <script src="../../src/core/charsets.js"></script>
   <script src="../../src/core/cidmaps.js"></script>
-  <script src="../../src/shared/colorspace.js"></script>
+  <script src="../../src/core/colorspace.js"></script>
   <script src="../../src/core/crypto.js"></script>
   <script src="../../src/core/pattern.js"></script>
   <script src="../../src/core/evaluator.js"></script>
diff --git a/web/viewer.html b/web/viewer.html
index ecc4085ea..39c05a220 100644
--- a/web/viewer.html
+++ b/web/viewer.html
@@ -48,8 +48,6 @@ http://sourceforge.net/adobe/cmap/wiki/License/
 
 <!--#if !PRODUCTION-->
     <script src="../src/shared/util.js"></script>
-    <script src="../src/shared/colorspace.js"></script>
-    <script src="../src/shared/function.js"></script>
     <script src="../src/shared/annotation.js"></script>
     <script src="../src/display/api.js"></script>
     <script src="../src/display/metadata.js"></script>