diff --git a/src/apps/rednatco/api.ts b/src/apps/rednatco/api.ts
index e6143205e37fb488b8689b33a014ad37be9da291..fce22576002dc8e6d4d53a21a22151b7fb9ebd14 100644
--- a/src/apps/rednatco/api.ts
+++ b/src/apps/rednatco/api.ts
@@ -1,4 +1,4 @@
-import { Filtering } from './filtering';
+import { Filters } from './filters';
 
 export namespace ReDNATCOMspApi {
     export namespace Commands {
@@ -9,8 +9,8 @@ export namespace ReDNATCOMspApi {
             return { type: 'deselect-step' };
         }
 
-        export type Filter = { type: 'filter', filter: Filtering.Filter };
-        export function Filter(filter: Filtering.Filter) {
+        export type Filter = { type: 'filter', filter: Filters.All };
+        export function Filter(filter: Filters.All) {
             return { type: 'filter', filter };
         }
 
diff --git a/src/apps/rednatco/filtering.ts b/src/apps/rednatco/filtering.ts
index 141e30efa44061f1539e30fbaf9d52463bf16332..5857e05b2712837c2a5e65da5398694af9ffe9db 100644
--- a/src/apps/rednatco/filtering.ts
+++ b/src/apps/rednatco/filtering.ts
@@ -1,36 +1,14 @@
+import { Filters } from './filters';
 import { Expression } from '../../mol-script/language/expression';
 import { MolScriptBuilder as MSB } from '../../mol-script/language/builder';
 import { formatMolScript } from '../../mol-script/language/expression-formatter';
 
 export namespace Filtering {
-    export type FilterKind = 'empty'|'slices';
-
-    export type EmptyFilter = {
-        kind: 'empty',
-    };
-    export function EmptyFilter(): EmptyFilter {
-        return { kind: 'empty' };
-    }
-
-    export type SlicesFilter = {
-        kind: 'slices',
-        slices: {
-            chain: string;
-            residues?: number[];
-            altIds?: string[];
-        }[];
-    };
-    export function SlicesFilter(slices: SlicesFilter['slices']): SlicesFilter {
-        return { kind: 'slices', slices };
-    }
-
-    export type Filter = EmptyFilter|SlicesFilter;
-
     function empty() {
         return MSB.struct.generator.all();
     }
 
-    function sliceExpr(slice: SlicesFilter['slices'][0]) {
+    function sliceExpr(slice: Filters.Slices['slices'][0]) {
         let expr = MSB.core.rel.eq([MSB.struct.atomProperty.macromolecular.label_asym_id(), slice.chain]);
 
         if (slice.residues && slice.residues.length > 0) {
@@ -59,7 +37,7 @@ export namespace Filtering {
         return expr;
     }
 
-    function slices(slices: SlicesFilter['slices']) {
+    function slices(slices: Filters.Slices['slices']) {
         if (slices.length > 0) {
             let expr = sliceExpr(slices[0]);
 
@@ -78,7 +56,7 @@ export namespace Filtering {
         return MSB.struct.generator.all();
     }
 
-    export function toExpression(filter: Filter): Expression {
+    export function toExpression(filter: Filters.All): Expression {
         switch (filter.kind) {
             case 'empty':
                 return empty();
diff --git a/src/apps/rednatco/filters.ts b/src/apps/rednatco/filters.ts
new file mode 100644
index 0000000000000000000000000000000000000000..a108881d485596f23cb7abeca3285c7b27168be5
--- /dev/null
+++ b/src/apps/rednatco/filters.ts
@@ -0,0 +1,24 @@
+export namespace Filters {
+    export type Kind = 'empty'|'slices';
+
+    export type Empty = {
+        kind: 'empty',
+    };
+    export function Empty(): Empty {
+        return { kind: 'empty' };
+    }
+
+    export type Slices = {
+        kind: 'slices',
+        slices: {
+            chain: string;
+            residues?: number[];
+            altIds?: string[];
+        }[];
+    };
+    export function Slices(slices: Slices['slices']): Slices {
+        return { kind: 'slices', slices };
+    }
+
+    export type All = Empty|Slices;
+}
diff --git a/src/apps/rednatco/viewer.ts b/src/apps/rednatco/viewer.ts
index 63aaf14bcc8eca3e52cad8c21d24881897f2233a..f7cf4ec3767ded4f2ac5470f5fc2601f391ec61f 100644
--- a/src/apps/rednatco/viewer.ts
+++ b/src/apps/rednatco/viewer.ts
@@ -2,6 +2,7 @@ import * as IDs from './idents';
 import * as RefCfmr from './reference-conformers';
 import { ReDNATCOMsp, Display, VisualRepresentations } from './index';
 import { NtCColors } from './colors';
+import { Filters } from './filters';
 import { Filtering } from './filtering';
 import { ReferenceConformersPdbs } from './reference-conformers-pdbs';
 import { Step } from './step';
@@ -857,7 +858,7 @@ export class ReDNATCOMspViewer {
             b2.to(IDs.ID('entire-structure', 'nucleic', BaseRef))
                 .apply(
                     StateTransforms.Model.StructureSelectionFromExpression,
-                    { expression: Filtering.toExpression(Filtering.EmptyFilter()) },
+                    { expression: Filtering.toExpression(Filters.Empty()) },
                     { ref: IDs.ID('structure', 'nucleic', BaseRef) }
                 );
         }
@@ -865,7 +866,7 @@ export class ReDNATCOMspViewer {
             b2.to(IDs.ID('entire-structure', 'protein', BaseRef))
                 .apply(
                     StateTransforms.Model.StructureSelectionFromExpression,
-                    { expression: Filtering.toExpression(Filtering.EmptyFilter()) },
+                    { expression: Filtering.toExpression(Filters.Empty()) },
                     { ref: IDs.ID('structure', 'protein', BaseRef) }
                 );
         }
@@ -873,7 +874,7 @@ export class ReDNATCOMspViewer {
             b2.to(IDs.ID('entire-structure', 'water', BaseRef))
                 .apply(
                     StateTransforms.Model.StructureSelectionFromExpression,
-                    { expression: Filtering.toExpression(Filtering.EmptyFilter()) },
+                    { expression: Filtering.toExpression(Filters.Empty()) },
                     { ref: IDs.ID('structure', 'water', BaseRef) }
                 );
         }