diff --git a/package-lock.json b/package-lock.json
index 7c59de544f879018656eb92fe3ca8a026f1778de..1ce79bb2dc8d4d8557caa3e2f73f46de4c4992d2 100644
Binary files a/package-lock.json and b/package-lock.json differ
diff --git a/package.json b/package.json
index 11d5d2928bdf2f8ea44b689a06a48c7199bf81ea..44477c2839fd6b4420e7e630cf57293956749508 100644
--- a/package.json
+++ b/package.json
@@ -37,13 +37,13 @@
     "jest": "^21.2.1",
     "rollup": "^0.50.0",
     "rollup-plugin-buble": "^0.16.0",
-    "rollup-plugin-commonjs": "^8.2.5",
+    "rollup-plugin-commonjs": "^8.2.6",
     "rollup-plugin-json": "^2.3.0",
     "rollup-plugin-node-resolve": "^3.0.0",
     "rollup-watch": "^4.3.1",
     "ts-jest": "^21.1.4",
     "tslint": "^5.8.0",
-    "typescript": "^2.5.3",
+    "typescript": "^2.6.1",
     "uglify-js": "^3.1.6",
     "util.promisify": "^1.0.0"
   },
diff --git a/src/mol-data/query/selection.ts b/src/mol-data/query/selection.ts
index a509c40fe00542fc1ee7465e32e1d63e94f10cce..1ae15e6085672dceb5dabf50f18a7405f2166e0d 100644
--- a/src/mol-data/query/selection.ts
+++ b/src/mol-data/query/selection.ts
@@ -18,6 +18,7 @@ namespace Selection {
     // TODO: 'structure iterator'
     // TODO: selection builders (linear / unique)
     // TODO: spatial lookup
+    // TODO: If all structures in a selection are "singletons", collapse them into a single structure
 }
 
 export default Selection
\ No newline at end of file
diff --git a/src/mol-io/reader/cif/schema.ts b/src/mol-io/reader/cif/schema.ts
index 67c11c14a44bf5914be3ca710fc27eb39bf8c9b3..b1e7d8d35a0031f5e6182b62cb7980f2e08d9c46 100644
--- a/src/mol-io/reader/cif/schema.ts
+++ b/src/mol-io/reader/cif/schema.ts
@@ -60,6 +60,7 @@ function createColumn<T>(type: Column.Type, field: Data.Field, value: (row: numb
 
 class _TypedFrame implements TypedFrame<any> { // tslint:disable-line:class-name
     header = this._frame.header;
+    [k: string]: any;
     constructor(public _frame: Data.Frame, schema: FrameSchema) {
         for (const k of Object.keys(schema)) {
             Object.defineProperty(this, k, { value: createTypedCategory(k, schema[k], _frame), enumerable: true, writable: false, configurable: false });
@@ -70,6 +71,7 @@ class _TypedFrame implements TypedFrame<any> { // tslint:disable-line:class-name
 class _TypedCategory implements Table<any> { // tslint:disable-line:class-name
     _rowCount = this._category.rowCount;
     _columns: ReadonlyArray<string>;
+    [k: string]: any;
     constructor(public _category: Data.Category, schema: Table.Schema, public _isDefined: boolean) {
         const fieldKeys = Object.keys(schema);
         this._columns = fieldKeys;
diff --git a/tsconfig.json b/tsconfig.json
index 750314b797aa3ce993dd3efd7750fc441dc471ef..b0f81fbe9eb343e6177eda50fce40425c7cf0723 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -7,6 +7,7 @@
         "sourceMap": false,
         "noUnusedLocals": true,
         "strictNullChecks": true,
+        "strictFunctionTypes": true,
         //"downlevelIteration": true,
         "lib": [ "es6", "dom" ],
         "outDir": "build/js/src",