diff --git a/src/mol-base/collections/_spec/table.spec.ts b/src/mol-base/collections/_spec/table.spec.ts
index dd5243a817380e8b95e398ea63c15ea9708164b8..537579793d9bcc799abc9443d854ed28f3f7e3aa 100644
--- a/src/mol-base/collections/_spec/table.spec.ts
+++ b/src/mol-base/collections/_spec/table.spec.ts
@@ -43,6 +43,10 @@ describe('column', () => {
     it('permutation', () => {
         expect(Column.permutation(arr, [1, 0, 3, 2]).toArray()).toEqual([2, 1, 4, 3]);
     });
+
+    it('map to array', () => {
+        expect(Column.mapToArray(arrWindow, x => x + 1)).toEqual([3, 4]);
+    });
 })
 
 describe('table', () => {
diff --git a/src/mol-base/collections/column.ts b/src/mol-base/collections/column.ts
index 2137da5cf9c22d23e71f09209430e7c191c05058..941e25afcc9a390b861d31bdc5744b45817d58c5 100644
--- a/src/mol-base/collections/column.ts
+++ b/src/mol-base/collections/column.ts
@@ -94,6 +94,10 @@ namespace Column {
         return createFirstIndexMapOfColumn(column);
     }
 
+    export function mapToArray<T, S>(column: Column<T>, f: (v: T) => S, ctor?: { new(size: number): ArrayLike<number> }): ArrayLike<S> {
+        return mapToArrayImpl(column, f, ctor || Array);
+    }
+
     /** Makes the column backned by an array. Useful for columns that accessed often. */
     export function asArrayColumn<T>(c: Column<T>, array?: ToArrayParams['array']): Column<T> {
         if (c['@array']) return c;
@@ -257,6 +261,12 @@ function permutationFull<T>(c: Column<T>, map: ArrayLike<number>): Column<T> {
     };
 }
 
+function mapToArrayImpl<T, S>(c: Column<T>, f: (v: T) => S, ctor: { new(size: number): ArrayLike<number> }): ArrayLike<S> {
+    const ret = new ctor(c.rowCount) as any;
+    for (let i = 0, _i = c.rowCount; i < _i; i++) ret[i] = f(c.value(i));
+    return ret;
+}
+
 export namespace ColumnHelpers {
     export function getArrayBounds(rowCount: number, params?: Column.ToArrayParams) {
         const start = params && typeof params.start !== 'undefined' ? Math.max(Math.min(params.start, rowCount - 1), 0) : 0;
diff --git a/src/mol-data/model/properties/macromolecule-tree.ts b/src/mol-data/model/properties/macromolecule-tree.ts
index 73728868eb0acb092fe9c4dc3abb40d6347292d4..f96f45163c77ab93b42d49eb6a03b9c9fa3780ad 100644
--- a/src/mol-data/model/properties/macromolecule-tree.ts
+++ b/src/mol-data/model/properties/macromolecule-tree.ts
@@ -21,10 +21,7 @@ export const AtomsSchema = {
     label_alt_id: mmCIF.atom_site.label_alt_id,
     pdbx_formal_charge: mmCIF.atom_site.pdbx_formal_charge,
     occupancy: mmCIF.atom_site.occupancy,
-    B_iso_or_equiv: mmCIF.atom_site.B_iso_or_equiv,
-
-    key: Column.Type.int,
-    source_row: Column.Type.int,
+    B_iso_or_equiv: mmCIF.atom_site.B_iso_or_equiv
 };
 
 export interface Atoms extends Table<typeof AtomsSchema> { }