diff --git a/src/index.ts b/src/index.ts
index e16ea3dd0db16ae108ca360ca914d0ca486507aa..e20061a1285f910b291863a4776f1663a706478f 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1,4 +1,4 @@
-/*
+/**
  * Copyright (c) 2017 molio contributors, licensed under MIT, See LICENSE file for more info.
  *
  * @author Alexander Rose <alexander.rose@weirdbyte.de>
diff --git a/src/reader/cif/binary/decoder.ts b/src/reader/cif/binary/decoder.ts
index f6c587f37211c5f161500b997920e6b1861a5084..2e06613900110aa4b9f463be8764b1d9453e1c45 100644
--- a/src/reader/cif/binary/decoder.ts
+++ b/src/reader/cif/binary/decoder.ts
@@ -1,4 +1,4 @@
-/*
+/**
  * Copyright (c) 2017 molio contributors, licensed under MIT, See LICENSE file for more info.
  *
  * From CIFTools.js
diff --git a/src/reader/cif/binary/encoding.ts b/src/reader/cif/binary/encoding.ts
index c9369e96445ae0aec351c990a3b5f20cedbaa17e..6bf50cf1a8db22ee8fc4657b3cff4208965b4cf9 100644
--- a/src/reader/cif/binary/encoding.ts
+++ b/src/reader/cif/binary/encoding.ts
@@ -1,4 +1,4 @@
-/*
+/**
  * Copyright (c) 2017 molio contributors, licensed under MIT, See LICENSE file for more info.
  *
  * From CIFTools.js
diff --git a/src/reader/cif/binary/field.ts b/src/reader/cif/binary/field.ts
index 974dd522b05f41515bf7b664d906911d3b41e0db..4d668b5817e24d1fa776467bb58844f9912183d1 100644
--- a/src/reader/cif/binary/field.ts
+++ b/src/reader/cif/binary/field.ts
@@ -1,4 +1,4 @@
-/*
+/**
  * Copyright (c) 2017 molio contributors, licensed under MIT, See LICENSE file for more info.
  *
  * @author David Sehnal <david.sehnal@gmail.com>
diff --git a/src/reader/cif/binary/parser.ts b/src/reader/cif/binary/parser.ts
index 318bd61bf141106adac00e9842de63c24efd7dec..958f6bfa291aef580a6d56ac3f1adaca1cc510cc 100644
--- a/src/reader/cif/binary/parser.ts
+++ b/src/reader/cif/binary/parser.ts
@@ -1,4 +1,4 @@
-/*
+/**
  * Copyright (c) 2017 molio contributors, licensed under MIT, See LICENSE file for more info.
  *
  * @author David Sehnal <david.sehnal@gmail.com>
diff --git a/src/reader/cif/data-model.ts b/src/reader/cif/data-model.ts
index a28af149d2e7bf32420594bc36823800b638cc18..fdc54b5f6a4fbc09ca711cdd21d2a082b893a806 100644
--- a/src/reader/cif/data-model.ts
+++ b/src/reader/cif/data-model.ts
@@ -1,4 +1,4 @@
-/*
+/**
  * Copyright (c) 2017 molio contributors, licensed under MIT, See LICENSE file for more info.
  *
  * @author David Sehnal <david.sehnal@gmail.com>
diff --git a/src/reader/cif/index.ts b/src/reader/cif/index.ts
index e7dcc0f880df91790107951e808c52f2603c721e..fad12ae1b6d19dbe8c6d0698c94530937846de7e 100644
--- a/src/reader/cif/index.ts
+++ b/src/reader/cif/index.ts
@@ -1,4 +1,4 @@
-/*
+/**
  * Copyright (c) 2017 molio contributors, licensed under MIT, See LICENSE file for more info.
  *
  * @author David Sehnal <david.sehnal@gmail.com>
diff --git a/src/reader/cif/schema.ts b/src/reader/cif/schema.ts
index f6c058f58978af794f5b14fe610cf2a2f37b5ead..28f2afca2d78d3956ce2ac46fd1d8bfa11f0585d 100644
--- a/src/reader/cif/schema.ts
+++ b/src/reader/cif/schema.ts
@@ -1,4 +1,4 @@
-/*
+/**
  * Copyright (c) 2017 molio contributors, licensed under MIT, See LICENSE file for more info.
  *
  * @author David Sehnal <david.sehnal@gmail.com>
diff --git a/src/reader/cif/schema/mmcif.ts b/src/reader/cif/schema/mmcif.ts
index fdca87dc91dc119f247b727afeadf7a3834068d4..a6ce231e46860e541f57b744fb44107b324680f5 100644
--- a/src/reader/cif/schema/mmcif.ts
+++ b/src/reader/cif/schema/mmcif.ts
@@ -1,4 +1,4 @@
-/*
+/**
  * Copyright (c) 2017 molio contributors, licensed under MIT, See LICENSE file for more info.
  *
  * @author David Sehnal <david.sehnal@gmail.com>
diff --git a/src/reader/cif/text/field.ts b/src/reader/cif/text/field.ts
index 7f0951fb1b5cac66e6ec8afc163fb0d806082207..ecf14c3618d7a49c493c34bbcc89a7054c13ada6 100644
--- a/src/reader/cif/text/field.ts
+++ b/src/reader/cif/text/field.ts
@@ -1,4 +1,4 @@
-/*
+/**
  * Copyright (c) 2017 molio contributors, licensed under MIT, See LICENSE file for more info.
  *
  * @author David Sehnal <david.sehnal@gmail.com>
diff --git a/src/reader/cif/text/parser.ts b/src/reader/cif/text/parser.ts
index 7647125796ce818c2c7dbaa959f60f657c59a687..b7f593f864e70d607e1d9dd1f46381691cee24e5 100644
--- a/src/reader/cif/text/parser.ts
+++ b/src/reader/cif/text/parser.ts
@@ -1,4 +1,4 @@
-/*
+/**
  * Copyright (c) 2017 molio contributors, licensed under MIT, See LICENSE file for more info.
  *
  * @author David Sehnal <david.sehnal@gmail.com>
@@ -48,10 +48,10 @@ interface TokenizerState {
     length: number;
     isEscaped: boolean;
 
-    currentLineNumber: number;
-    currentTokenType: CifTokenType;
-    currentTokenStart: number;
-    currentTokenEnd: number;
+    lineNumber: number;
+    tokenType: CifTokenType;
+    tokenStart: number;
+    tokenEnd: number;
 
     chunker: Computation.Chunker
 }
@@ -66,14 +66,14 @@ function eatValue(state: TokenizerState) {
             case 10: // \n
             case 13: // \r
             case 32: // ' '
-                state.currentTokenEnd = state.position;
+                state.tokenEnd = state.position;
                 return;
             default:
                 ++state.position;
                 break;
         }
     }
-    state.currentTokenEnd = state.position;
+    state.tokenEnd = state.position;
 }
 
 /**
@@ -99,16 +99,16 @@ function eatEscaped(state: TokenizerState, esc: number) {
                 case 13: // \r
                 case 32: // ' '
                     // get rid of the quotes.
-                    state.currentTokenStart++;
-                    state.currentTokenEnd = state.position;
+                    state.tokenStart++;
+                    state.tokenEnd = state.position;
                     state.isEscaped = true;
                     ++state.position;
                     return;
                 default:
                     if (next === void 0) { // = "end of stream"
                         // get rid of the quotes.
-                        state.currentTokenStart++;
-                        state.currentTokenEnd = state.position;
+                        state.tokenStart++;
+                        state.tokenEnd = state.position;
                         state.isEscaped = true;
                         ++state.position;
                         return;
@@ -119,14 +119,14 @@ function eatEscaped(state: TokenizerState, esc: number) {
         } else {
             // handle 'xxxNEWLINE => 'xxx
             if (c === 10 || c === 13) {
-                state.currentTokenEnd = state.position;
+                state.tokenEnd = state.position;
                 return;
             }
             ++state.position;
         }
     }
 
-    state.currentTokenEnd = state.position;
+    state.tokenEnd = state.position;
 }
 
 /**
@@ -139,7 +139,7 @@ function eatMultiline(state: TokenizerState) {
         if (c === 59 && (prev === 10 || prev === 13)) { // ;, \n \r
             state.position = pos + 1;
             // get rid of the ;
-            state.currentTokenStart++;
+            state.tokenStart++;
 
             // remove trailing newlines
             pos--;
@@ -148,16 +148,16 @@ function eatMultiline(state: TokenizerState) {
                 pos--;
                 c = state.data.charCodeAt(pos);
             }
-            state.currentTokenEnd = pos + 1;
+            state.tokenEnd = pos + 1;
 
             state.isEscaped = true;
             return;
         } else {
             // handle line numbers
             if (c === 13) { // \r
-                state.currentLineNumber++;
+                state.lineNumber++;
             } else if (c === 10 && prev !== 13) { // \r\n
-                state.currentLineNumber++;
+                state.lineNumber++;
             }
 
             prev = c;
@@ -199,7 +199,7 @@ function skipWhitespace(state: TokenizerState): number {
             case 10: // \n
                 // handle \r\n
                 if (prev !== 13) {
-                    ++state.currentLineNumber;
+                    ++state.lineNumber;
                 }
                 prev = c;
                 ++state.position;
@@ -207,7 +207,7 @@ function skipWhitespace(state: TokenizerState): number {
             case 13: // \r
                 prev = c;
                 ++state.position;
-                ++state.currentLineNumber;
+                ++state.lineNumber;
                 break;
             default:
                 return prev;
@@ -220,16 +220,16 @@ function isData(state: TokenizerState): boolean {
     // here we already assume the 5th char is _ and that the length >= 5
 
     // d/D
-    let c = state.data.charCodeAt(state.currentTokenStart);
+    let c = state.data.charCodeAt(state.tokenStart);
     if (c !== 68 && c !== 100) return false;
     // a/A
-    c = state.data.charCodeAt(state.currentTokenStart + 1);
+    c = state.data.charCodeAt(state.tokenStart + 1);
     if (c !== 65 && c !== 97) return false;
     // t/t
-    c = state.data.charCodeAt(state.currentTokenStart + 2);
+    c = state.data.charCodeAt(state.tokenStart + 2);
     if (c !== 84 && c !== 116) return false;
     // a/A
-    c = state.data.charCodeAt(state.currentTokenStart + 3);
+    c = state.data.charCodeAt(state.tokenStart + 3);
     if (c !== 65 && c !== 97) return false;
 
     return true;
@@ -239,16 +239,16 @@ function isSave(state: TokenizerState): boolean {
     // here we already assume the 5th char is _ and that the length >= 5
 
     // s/S
-    let c = state.data.charCodeAt(state.currentTokenStart);
+    let c = state.data.charCodeAt(state.tokenStart);
     if (c !== 83 && c !== 115) return false;
     // a/A
-    c = state.data.charCodeAt(state.currentTokenStart + 1);
+    c = state.data.charCodeAt(state.tokenStart + 1);
     if (c !== 65 && c !== 97) return false;
     // v/V
-    c = state.data.charCodeAt(state.currentTokenStart + 2);
+    c = state.data.charCodeAt(state.tokenStart + 2);
     if (c !== 86 && c !== 118) return false;
     // e/E
-    c = state.data.charCodeAt(state.currentTokenStart + 3);
+    c = state.data.charCodeAt(state.tokenStart + 3);
     if (c !== 69 && c !== 101) return false;
 
     return true;
@@ -257,19 +257,19 @@ function isSave(state: TokenizerState): boolean {
 function isLoop(state: TokenizerState): boolean {
     // here we already assume the 5th char is _ and that the length >= 5
 
-    if (state.currentTokenEnd - state.currentTokenStart !== 5) return false;
+    if (state.tokenEnd - state.tokenStart !== 5) return false;
 
     // l/L
-    let c = state.data.charCodeAt(state.currentTokenStart);
+    let c = state.data.charCodeAt(state.tokenStart);
     if (c !== 76 && c !== 108) return false;
     // o/O
-    c = state.data.charCodeAt(state.currentTokenStart + 1);
+    c = state.data.charCodeAt(state.tokenStart + 1);
     if (c !== 79 && c !== 111) return false;
     // o/O
-    c = state.data.charCodeAt(state.currentTokenStart + 2);
+    c = state.data.charCodeAt(state.tokenStart + 2);
     if (c !== 79 && c !== 111) return false;
     // p/P
-    c = state.data.charCodeAt(state.currentTokenStart + 3);
+    c = state.data.charCodeAt(state.tokenStart + 3);
     if (c !== 80 && c !== 112) return false;
 
     return true;
@@ -281,8 +281,8 @@ function isLoop(state: TokenizerState): boolean {
 function isNamespace(state: TokenizerState, start: number, end: number): boolean {
     let i: number,
         nsLen = end - start,
-        offset = state.currentTokenStart - start,
-        tokenLen = state.currentTokenEnd - state.currentTokenStart;
+        offset = state.tokenStart - start,
+        tokenLen = state.tokenEnd - state.tokenStart;
 
     if (tokenLen < nsLen) return false;
 
@@ -303,7 +303,7 @@ function isNamespace(state: TokenizerState, start: number, end: number): boolean
  */
 function getNamespaceEnd(state: TokenizerState): number {
     let i: number;
-    for (i = state.currentTokenStart; i < state.currentTokenEnd; ++i) {
+    for (i = state.tokenStart; i < state.tokenEnd; ++i) {
         if (state.data.charCodeAt(i) === 46) return i;
     }
     return i;
@@ -313,14 +313,14 @@ function getNamespaceEnd(state: TokenizerState): number {
  * Get the namespace string. endIndex is obtained by the getNamespaceEnd() function.
  */
 function getNamespace(state: TokenizerState, endIndex: number) {
-    return state.data.substring(state.currentTokenStart, endIndex);
+    return state.data.substring(state.tokenStart, endIndex);
 }
 
 /**
  * String representation of the current token.
  */
 function getTokenString(state: TokenizerState) {
-    return state.data.substring(state.currentTokenStart, state.currentTokenEnd);
+    return state.data.substring(state.tokenStart, state.tokenEnd);
 }
 
 /**
@@ -330,23 +330,23 @@ function moveNextInternal(state: TokenizerState) {
     let prev = skipWhitespace(state);
 
     if (state.position >= state.length) {
-        state.currentTokenType = CifTokenType.End;
+        state.tokenType = CifTokenType.End;
         return;
     }
 
-    state.currentTokenStart = state.position;
-    state.currentTokenEnd = state.position;
+    state.tokenStart = state.position;
+    state.tokenEnd = state.position;
     state.isEscaped = false;
     let c = state.data.charCodeAt(state.position);
     switch (c) {
         case 35: // #, comment
             skipCommentLine(state);
-            state.currentTokenType = CifTokenType.Comment;
+            state.tokenType = CifTokenType.Comment;
             break;
         case 34: // ", escaped value
         case 39: // ', escaped value
             eatEscaped(state, c);
-            state.currentTokenType = CifTokenType.Value;
+            state.tokenType = CifTokenType.Value;
             break;
         case 59: // ;, possible multiline value
             // multiline value must start at the beginning of the line.
@@ -355,25 +355,25 @@ function moveNextInternal(state: TokenizerState) {
             } else {
                 eatValue(state);
             }
-            state.currentTokenType = CifTokenType.Value;
+            state.tokenType = CifTokenType.Value;
             break;
         default:
             eatValue(state);
             // escaped is always Value
             if (state.isEscaped) {
-                state.currentTokenType = CifTokenType.Value;
+                state.tokenType = CifTokenType.Value;
                 // _ always means column name
-            } else if (state.data.charCodeAt(state.currentTokenStart) === 95) { // _
-                state.currentTokenType = CifTokenType.ColumnName;
+            } else if (state.data.charCodeAt(state.tokenStart) === 95) { // _
+                state.tokenType = CifTokenType.ColumnName;
                 // 5th char needs to be _ for data_ or loop_
-            } else if (state.currentTokenEnd - state.currentTokenStart >= 5 && state.data.charCodeAt(state.currentTokenStart + 4) === 95) {
-                if (isData(state)) state.currentTokenType = CifTokenType.Data;
-                else if (isSave(state)) state.currentTokenType = CifTokenType.Save;
-                else if (isLoop(state)) state.currentTokenType = CifTokenType.Loop;
-                else state.currentTokenType = CifTokenType.Value;
+            } else if (state.tokenEnd - state.tokenStart >= 5 && state.data.charCodeAt(state.tokenStart + 4) === 95) {
+                if (isData(state)) state.tokenType = CifTokenType.Data;
+                else if (isSave(state)) state.tokenType = CifTokenType.Save;
+                else if (isLoop(state)) state.tokenType = CifTokenType.Loop;
+                else state.tokenType = CifTokenType.Value;
                 // all other tests failed, we are at Value token.
             } else {
-                state.currentTokenType = CifTokenType.Value;
+                state.tokenType = CifTokenType.Value;
             }
             break;
     }
@@ -384,7 +384,7 @@ function moveNextInternal(state: TokenizerState) {
  */
 function moveNext(state: TokenizerState) {
     moveNextInternal(state);
-    while (state.currentTokenType === CifTokenType.Comment) moveNextInternal(state);
+    while (state.tokenType === CifTokenType.Comment) moveNextInternal(state);
 }
 
 function createTokenizer(data: string, ctx: Computation.Context): TokenizerState {
@@ -392,10 +392,10 @@ function createTokenizer(data: string, ctx: Computation.Context): TokenizerState
         data,
         length: data.length,
         position: 0,
-        currentTokenStart: 0,
-        currentTokenEnd: 0,
-        currentTokenType: CifTokenType.End,
-        currentLineNumber: 1,
+        tokenStart: 0,
+        tokenEnd: 0,
+        tokenType: CifTokenType.End,
+        lineNumber: 1,
         isEscaped: false,
 
         chunker: Computation.chunker(ctx, 1000000)
@@ -415,27 +415,27 @@ interface CifCategoryResult {
  * Reads a category containing a single row.
  */
 function handleSingle(tokenizer: TokenizerState, categories: { [name: string]: Data.Category }): CifCategoryResult {
-    const nsStart = tokenizer.currentTokenStart, nsEnd = getNamespaceEnd(tokenizer);
+    const nsStart = tokenizer.tokenStart, nsEnd = getNamespaceEnd(tokenizer);
     const name = getNamespace(tokenizer, nsEnd);
     const fields = Object.create(null);
 
     let readingNames = true;
     while (readingNames) {
-        if (tokenizer.currentTokenType !== CifTokenType.ColumnName || !isNamespace(tokenizer, nsStart, nsEnd)) {
+        if (tokenizer.tokenType !== CifTokenType.ColumnName || !isNamespace(tokenizer, nsStart, nsEnd)) {
             readingNames = false;
             break;
         }
 
         const fieldName = getTokenString(tokenizer).substring(name.length + 1);
         moveNext(tokenizer);
-        if (tokenizer.currentTokenType as any !== CifTokenType.Value) {
+        if (tokenizer.tokenType as any !== CifTokenType.Value) {
             return {
                 hasError: true,
-                errorLine: tokenizer.currentLineNumber,
+                errorLine: tokenizer.lineNumber,
                 errorMessage: 'Expected value.'
             }
         }
-        fields[fieldName] = Field({ data: tokenizer.data, indices: [tokenizer.currentTokenStart, tokenizer.currentTokenEnd], count: 1 }, 1);
+        fields[fieldName] = Field({ data: tokenizer.data, indices: [tokenizer.tokenStart, tokenizer.tokenEnd], count: 1 }, 1);
         moveNext(tokenizer);
     }
 
@@ -459,8 +459,8 @@ function readLoopChunk(state: LoopReadState, chunkSize: number) {
     const { tokenizer, tokens, fieldCount } = state;
     let tokenCount = state.tokenCount;
     let counter = 0;
-    while (tokenizer.currentTokenType === CifTokenType.Value && counter < chunkSize) {
-        TokenBuilder.add(tokens[(tokenCount++) % fieldCount], tokenizer.currentTokenStart, tokenizer.currentTokenEnd);
+    while (tokenizer.tokenType === CifTokenType.Value && counter < chunkSize) {
+        TokenBuilder.add(tokens[(tokenCount++) % fieldCount], tokenizer.tokenStart, tokenizer.tokenEnd);
         moveNext(tokenizer);
         counter++;
     }
@@ -478,13 +478,13 @@ function readLoopChunks(state: LoopReadState) {
  * Reads a loop.
  */
 async function handleLoop(tokenizer: TokenizerState, categories: { [name: string]: Data.Category }): Promise<CifCategoryResult> {
-    const loopLine = tokenizer.currentLineNumber;
+    const loopLine = tokenizer.lineNumber;
 
     moveNext(tokenizer);
     const name = getNamespace(tokenizer, getNamespaceEnd(tokenizer));
     const fieldNames: string[] = [];
 
-    while (tokenizer.currentTokenType === CifTokenType.ColumnName) {
+    while (tokenizer.tokenType === CifTokenType.ColumnName) {
         fieldNames[fieldNames.length] = getTokenString(tokenizer).substring(name.length + 1);
         moveNext(tokenizer);
     }
@@ -506,7 +506,7 @@ async function handleLoop(tokenizer: TokenizerState, categories: { [name: string
     if (state.tokenCount % fieldCount !== 0) {
         return {
             hasError: true,
-            errorLine: tokenizer.currentLineNumber,
+            errorLine: tokenizer.lineNumber,
             errorMessage: 'The number of values for loop starting at line ' + loopLine + ' is not a multiple of the number of columns.'
         };
     }
@@ -558,8 +558,8 @@ async function parseInternal(data: string, ctx: Computation.Context) {
     ctx.updateProgress({ message: 'Parsing...' });
 
     moveNext(tokenizer);
-    while (tokenizer.currentTokenType !== CifTokenType.End) {
-        let token = tokenizer.currentTokenType;
+    while (tokenizer.tokenType !== CifTokenType.End) {
+        let token = tokenizer.tokenType;
 
         // Data block
         if (token === CifTokenType.Data) {
@@ -569,7 +569,7 @@ async function parseInternal(data: string, ctx: Computation.Context) {
             if (Object.keys(blockCategories).length > 0) {
                 dataBlocks.push(Data.Block(blockCategories, blockHeader));
             }
-            blockHeader = data.substring(tokenizer.currentTokenStart + 5, tokenizer.currentTokenEnd);
+            blockHeader = data.substring(tokenizer.tokenStart + 5, tokenizer.tokenEnd);
             blockCategories = Object.create(null);
             moveNext(tokenizer);
         }
@@ -609,7 +609,7 @@ async function parseInternal(data: string, ctx: Computation.Context) {
             }
             // Out of options
         } else {
-            return error(tokenizer.currentLineNumber, 'Unexpected token. Expected data_, loop_, or data name.');
+            return error(tokenizer.lineNumber, 'Unexpected token. Expected data_, loop_, or data name.');
         }
     }
 
diff --git a/src/reader/common/column.ts b/src/reader/common/column.ts
index 5f9fb03cd1cd8fa4fe1c24d8a6f488d2c5102354..209d47961bea83d612566d7f001a8356d5c18ff3 100644
--- a/src/reader/common/column.ts
+++ b/src/reader/common/column.ts
@@ -1,4 +1,4 @@
-/*
+/**
  * Copyright (c) 2017 molio contributors, licensed under MIT, See LICENSE file for more info.
  *
  * @author David Sehnal <david.sehnal@gmail.com>
diff --git a/src/reader/common/text/column/fixed.ts b/src/reader/common/text/column/fixed.ts
index 84a0f561ca37b0a0545b1da5a10c2f3c2b2b4d2c..ac411242ab8ebde05d71a72e81d8c5e4586a0844 100644
--- a/src/reader/common/text/column/fixed.ts
+++ b/src/reader/common/text/column/fixed.ts
@@ -1,4 +1,4 @@
-/*
+/**
  * Copyright (c) 2017 molio contributors, licensed under MIT, See LICENSE file for more info.
  *
  * @author David Sehnal <david.sehnal@gmail.com>
diff --git a/src/reader/common/text/column/token.ts b/src/reader/common/text/column/token.ts
index 0c5bb682f0e00a8fa402d945eba8dc3b575f852e..4d30f821118b279df63b88f0fd005bd3d2221837 100644
--- a/src/reader/common/text/column/token.ts
+++ b/src/reader/common/text/column/token.ts
@@ -1,4 +1,4 @@
-/*
+/**
  * Copyright (c) 2017 molio contributors, licensed under MIT, See LICENSE file for more info.
  *
  * @author David Sehnal <david.sehnal@gmail.com>
diff --git a/src/reader/common/text/number-parser.ts b/src/reader/common/text/number-parser.ts
index 2f5a8a80b17ae802a409f52e3351f1568b89299f..f7b097f8241b7b70cb98f8eec9d05484626b18bd 100644
--- a/src/reader/common/text/number-parser.ts
+++ b/src/reader/common/text/number-parser.ts
@@ -1,4 +1,4 @@
-/*
+/**
  * Copyright (c) 2017 molio contributors, licensed under MIT, See LICENSE file for more info.
  *
  * from https://github.com/dsehnal/CIFTools.js
diff --git a/src/reader/common/text/tokenizer.ts b/src/reader/common/text/tokenizer.ts
index d84705a43db0b67f159f15c158d2edc842b7c69e..a21f90c21a1f524c5624baaad2d2bf8def8d3854 100644
--- a/src/reader/common/text/tokenizer.ts
+++ b/src/reader/common/text/tokenizer.ts
@@ -1,4 +1,4 @@
-/*
+/**
  * Copyright (c) 2017 molio contributors, licensed under MIT, See LICENSE file for more info.
  *
  * mostly from https://github.com/dsehnal/CIFTools.js
@@ -9,14 +9,14 @@
 import Computation from '../../../utils/computation'
 
 export interface Tokenizer {
-    data: string
+    data: string,
 
-    position: number
-    length: number
+    position: number,
+    length: number,
 
-    currentLineNumber: number
-    currentTokenStart: number
-    currentTokenEnd: number
+    lineNumber: number,
+    tokenStart: number,
+    tokenEnd: number
 }
 
 export interface Tokens {
@@ -30,16 +30,16 @@ export function Tokenizer(data: string): Tokenizer {
         data,
         position: 0,
         length: data.length,
-        currentLineNumber: 1,
-        currentTokenStart: 0,
-        currentTokenEnd: 0
+        lineNumber: 1,
+        tokenStart: 0,
+        tokenEnd: 0
     };
 }
 
 export namespace Tokenizer {
 
     export function getTokenString(state: Tokenizer) {
-        return state.data.substring(state.currentTokenStart, state.currentTokenEnd);
+        return state.data.substring(state.tokenStart, state.tokenEnd);
     }
 
     /**
@@ -50,14 +50,14 @@ export namespace Tokenizer {
         while (state.position < state.length) {
             switch (data.charCodeAt(state.position)) {
                 case 10: // \n
-                    state.currentTokenEnd = state.position;
+                    state.tokenEnd = state.position;
                     ++state.position;
-                    ++state.currentLineNumber;
+                    ++state.lineNumber;
                     return;
                 case 13: // \r
-                    state.currentTokenEnd = state.position;
+                    state.tokenEnd = state.position;
                     ++state.position;
-                    ++state.currentLineNumber;
+                    ++state.lineNumber;
                     if (data.charCodeAt(state.position) === 10) {
                         ++state.position;
                     }
@@ -67,17 +67,17 @@ export namespace Tokenizer {
                     break;
             }
         }
-        state.currentTokenEnd = state.position;
+        state.tokenEnd = state.position;
     }
 
     /** Sets the current token start to the current position */
     export function markStart(state: Tokenizer) {
-        state.currentTokenStart = state.position;
+        state.tokenStart = state.position;
     }
 
     /** Sets the current token start to current position and moves to the next line. */
     export function markLine(state: Tokenizer) {
-        state.currentTokenStart = state.position;
+        state.tokenStart = state.position;
         eatLine(state);
     }
 
@@ -90,7 +90,7 @@ export namespace Tokenizer {
     function readLinesChunk(state: Tokenizer, count: number, tokens: Tokens) {
         for (let i = 0; i < count; i++) {
             markLine(state);
-            TokenBuilder.addUnchecked(tokens, state.currentTokenStart, state.currentTokenEnd);
+            TokenBuilder.addUnchecked(tokens, state.tokenStart, state.tokenEnd);
         }
     }
 
@@ -127,14 +127,14 @@ export namespace Tokenizer {
                 case 10: // \n
                 case 13: // \r
                 case 32: // ' '
-                    state.currentTokenEnd = state.position;
+                    state.tokenEnd = state.position;
                     return;
                 default:
                     ++state.position;
                     break;
             }
         }
-        state.currentTokenEnd = state.position;
+        state.tokenEnd = state.position;
     }
 
     /**
@@ -154,7 +154,7 @@ export namespace Tokenizer {
                 case 10: // \n
                     // handle \r\n
                     if (prev !== 13) {
-                        ++state.currentLineNumber;
+                        ++state.lineNumber;
                     }
                     prev = c;
                     ++state.position;
@@ -162,7 +162,7 @@ export namespace Tokenizer {
                 case 13: // \r
                     prev = c;
                     ++state.position;
-                    ++state.currentLineNumber;
+                    ++state.lineNumber;
                     break;
                 default:
                     return prev;
@@ -181,8 +181,8 @@ export namespace Tokenizer {
         c = data.charCodeAt(e);
         while ((c === 9 || c === 32) && e >= s) c = data.charCodeAt(--e);
 
-        state.currentTokenStart = s;
-        state.currentTokenEnd = e + 1;
+        state.tokenStart = s;
+        state.tokenEnd = e + 1;
         state.position = end;
     }
 }
diff --git a/src/reader/gro/parser.ts b/src/reader/gro/parser.ts
index 55db97ccbe11e76eb8011d508aa487c4b118277f..60d3dcddbb6df00ed137aa2c019fbb2acdc3dd8c 100644
--- a/src/reader/gro/parser.ts
+++ b/src/reader/gro/parser.ts
@@ -1,4 +1,4 @@
-/*
+/**
  * Copyright (c) 2017 molio contributors, licensed under MIT, See LICENSE file for more info.
  *
  * @author Alexander Rose <alexander.rose@weirdbyte.de>
diff --git a/src/reader/gro/schema.d.ts b/src/reader/gro/schema.d.ts
index 1d49d9641970598475fe2efcee25c231fca973c4..2ee9bc0edf12b9cddb0c883c53d15e4046a2d546 100644
--- a/src/reader/gro/schema.d.ts
+++ b/src/reader/gro/schema.d.ts
@@ -1,4 +1,4 @@
-/*
+/**
  * Copyright (c) 2017 molio contributors, licensed under MIT, See LICENSE file for more info.
  *
  * @author Alexander Rose <alexander.rose@weirdbyte.de>
diff --git a/src/reader/spec/cif.spec.ts b/src/reader/spec/cif.spec.ts
index 6e3824bd8e4d4857168565322da023d31e97c65e..c13ab97885321f534e833b8d9e364ef8bf958a59 100644
--- a/src/reader/spec/cif.spec.ts
+++ b/src/reader/spec/cif.spec.ts
@@ -1,4 +1,4 @@
-/*
+/**
  * Copyright (c) 2017 molio contributors, licensed under MIT, See LICENSE file for more info.
  *
  * @author David Sehnal <david.sehnal@gmail.com>
diff --git a/src/reader/spec/gro.spec.ts b/src/reader/spec/gro.spec.ts
index 157688fa4b53f38d5035c248d88dda32d6248dbd..ba2e48aef92cd266fb89649e0127cbae0baaad58 100644
--- a/src/reader/spec/gro.spec.ts
+++ b/src/reader/spec/gro.spec.ts
@@ -1,4 +1,4 @@
-/*
+/**
  * Copyright (c) 2017 molio contributors, licensed under MIT, See LICENSE file for more info.
  *
  * @author Alexander Rose <alexander.rose@weirdbyte.de>
diff --git a/src/reader/spec/text-column.spec.ts b/src/reader/spec/text-column.spec.ts
index e37d18d6a75f2c098d90cd7c4e387291d40cc707..3d3f15edb39f30b188ad3fa27f2093a734993afd 100644
--- a/src/reader/spec/text-column.spec.ts
+++ b/src/reader/spec/text-column.spec.ts
@@ -1,4 +1,4 @@
-/*
+/**
  * Copyright (c) 2017 molio contributors, licensed under MIT, See LICENSE file for more info.
  *
  * @author Alexander Rose <alexander.rose@weirdbyte.de>
diff --git a/src/script.ts b/src/script.ts
index 8612e3bc5d60cb213fb8adfa6a4845e5e4c16c80..b6df6755472ec3ffccd803b57fd6f51f0f7f7d53 100644
--- a/src/script.ts
+++ b/src/script.ts
@@ -1,4 +1,4 @@
-/*
+/**
  * Copyright (c) 2017 molio contributors, licensed under MIT, See LICENSE file for more info.
  *
  * @author Alexander Rose <alexander.rose@weirdbyte.de>
diff --git a/src/utils/chunked-array.ts b/src/utils/chunked-array.ts
index 54391c303e4d1094a1673adba472d9679a8c7218..fa1459e6a22fe29f31326291815882ec2c753300 100644
--- a/src/utils/chunked-array.ts
+++ b/src/utils/chunked-array.ts
@@ -1,4 +1,4 @@
-/*
+/**
  * Copyright (c) 2017 molio contributors, licensed under MIT, See LICENSE file for more info.
  *
  * from https://github.com/dsehnal/CIFTools.js
diff --git a/src/utils/computation.ts b/src/utils/computation.ts
index 565752b13940ae9477c5c01695c0b0581a775e8e..fa91d83f751d1a187e087dc2b08a6967b4747322 100644
--- a/src/utils/computation.ts
+++ b/src/utils/computation.ts
@@ -1,4 +1,4 @@
-/*
+/**
  * Copyright (c) 2017 molio contributors, licensed under MIT, See LICENSE file for more info.
  *
  * Adapted from https://github.com/dsehnal/LiteMol
@@ -13,7 +13,7 @@ interface Computation<A> {
 }
 
 namespace Computation {
-    export let PRINT_CONSOLE_ERROR = false;
+    export let PRINT_ERRORS_TO_CONSOLE = false;
 
     export function create<A>(computation: (ctx: Context) => Promise<A>) {
         return new ComputationImpl(computation);
@@ -61,7 +61,7 @@ namespace Computation {
     export type ProgressObserver = (progress: Readonly<Progress>) => void;
 
     export interface Running<A> {
-        subscribe(onProgress: ProgressObserver): void;
+        subscribe(onProgress: ProgressObserver): void,
         result: Promise<A>
     }
 
@@ -101,8 +101,8 @@ namespace Computation {
         process(nextChunk: (chunkSize: number) => number, update: (updater: Context['updateProgress']) => void, nextChunkSize?: number): Promise<void>
     }
 
-    export function chunker(ctx: Context, defaultChunkSize: number): Chunker {
-        return new ChunkedImpl(ctx, defaultChunkSize);
+    export function chunker(ctx: Context, nextChunkSize: number): Chunker {
+        return new ChunkerImpl(ctx, nextChunkSize);
     }
 }
 
@@ -125,7 +125,7 @@ class ComputationImpl<A> implements Computation<A> {
                     const result = await this.computation(context);
                     resolve(result);
                 } catch (e) {
-                    if (Computation.PRINT_CONSOLE_ERROR) console.error(e);
+                    if (Computation.PRINT_ERRORS_TO_CONSOLE) console.error(e);
                     reject(e);
                 } finally {
                     if (context.finished) context.finished();
@@ -227,15 +227,14 @@ class ObservableContext implements Computation.Context {
     }
 }
 
-
-class ChunkedImpl implements Computation.Chunker {
+class ChunkerImpl implements Computation.Chunker {
     private processedSinceUpdate = 0;
     private updater: Computation.Context['updateProgress'];
 
     private computeChunkSize() {
         const lastDelta = (this.context as ObservableContext).lastDelta || 0;
         if (!lastDelta) return this.nextChunkSize;
-        const rate = (this.context as ObservableContext).updateRate || 0;
+        const rate = (this.context as ObservableContext).updateRate || DefaulUpdateRateMs;
         const ret = Math.round(this.processedSinceUpdate * rate / lastDelta + 1);
         this.processedSinceUpdate = 0;
         return ret;
@@ -254,10 +253,10 @@ class ChunkedImpl implements Computation.Chunker {
 
     async process(nextChunk: (size: number) => number, update: (updater: Computation.Context['updateProgress']) => Promise<void> | void, nextChunkSize?: number) {
         if (typeof nextChunkSize !== 'undefined') this.setNextChunkSize(nextChunkSize);
-        let lastChunk: number;
 
-        while (( lastChunk = nextChunk(this.getNextChunkSize())) > 0) {
-            this.processedSinceUpdate += lastChunk;
+        let lastChunkSize: number;
+        while ((lastChunkSize = nextChunk(this.getNextChunkSize())) > 0) {
+            this.processedSinceUpdate += lastChunkSize;
             if (this.context.requiresUpdate) {
                 await update(this.updater);
                 this.nextChunkSize = this.computeChunkSize();
diff --git a/src/utils/scheduler.ts b/src/utils/scheduler.ts
index 5717fb834e700b9fb5b409e2faf99c6f46ff02e2..d061959047740ce72126413192885c5546153f9a 100644
--- a/src/utils/scheduler.ts
+++ b/src/utils/scheduler.ts
@@ -1,4 +1,4 @@
-/*
+/**
  * Copyright (c) 2017 molio contributors, licensed under MIT, See LICENSE file for more info.
  *
  * @author David Sehnal <david.sehnal@gmail.com>
@@ -10,7 +10,7 @@
  * MIT license.
  */
 
-function createActions() {
+function createImmediateActions() {
     type Callback = (...args: any[]) => void;
     type Task = { callback: Callback, args: any[] }
 
@@ -161,10 +161,6 @@ function createActions() {
         };
     }
 
-    // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.
-    //const attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);
-    //attachTo = attachTo && attachTo.setTimeout ? attachTo : global;
-
     // Don't get fooled by e.g. browserify environments.
     if (typeof process !== 'undefined' && {}.toString.call(process) === '[object process]') {
         // For Node.js before 0.9
@@ -189,20 +185,20 @@ function createActions() {
     };
 }
 
-const actions = (function () {
+const immediateActions = (function () {
     if (typeof setImmediate !== 'undefined') {
         return { setImmediate, clearImmediate };
     }
-    return createActions();
+    return createImmediateActions();
 }());
 
 function resolveImmediate(res: () => void) {
-    actions.setImmediate(res);
+    immediateActions.setImmediate(res);
 }
 
 export default {
-    immediate: actions.setImmediate,
-    clearImmediate: actions.clearImmediate,
+    immediate: immediateActions.setImmediate,
+    clearImmediate: immediateActions.clearImmediate,
 
     immediatePromise() { return new Promise<void>(resolveImmediate); }
 };
diff --git a/src/utils/short-string-pool.ts b/src/utils/short-string-pool.ts
index 54d673b7701b043829f541355e2d104322d3a535..870284bcca01277b4620dc6ce72aa0ae18fc013a 100644
--- a/src/utils/short-string-pool.ts
+++ b/src/utils/short-string-pool.ts
@@ -1,4 +1,4 @@
-/*
+/**
  * Copyright (c) 2017 molio contributors, licensed under MIT, See LICENSE file for more info.
  *
  * from https://github.com/dsehnal/CIFTools.js
diff --git a/src/utils/utf8.ts b/src/utils/utf8.ts
index aba675bbdea2f27a3ce6974e086cc43f48804917..ff7c8a6fb7ef0d374e99b160f969b3a70d260f5e 100644
--- a/src/utils/utf8.ts
+++ b/src/utils/utf8.ts
@@ -1,4 +1,4 @@
-/*
+/**
  * Copyright (c) 2017 molio contributors, licensed under MIT, See LICENSE file for more info.
  *
  * Adapted from https://github.com/rcsb/mmtf-javascript