diff --git a/README.md b/README.md
index dbd22ed6eeab5a5c75e772e86980421917e4732f..d5dd8c10995132fa4f0c3f20fbfedb0305410f94 100644
--- a/README.md
+++ b/README.md
@@ -93,7 +93,7 @@ Install CIFTools `npm install ciftools -g`
 
 **GraphQL schemas**
 
-    node data/rcsb-graphql/codegen.js
+    ./node_modules/.bin/graphql-codegen -c ./data/rcsb-graphql/codegen.yml
 
 ### Other scripts
 **Create chem comp bond table**
diff --git a/data/rcsb-graphql/codegen.js b/data/rcsb-graphql/codegen.js
deleted file mode 100644
index d7e621da12d10c0eeafae57c19375c18933d6e32..0000000000000000000000000000000000000000
--- a/data/rcsb-graphql/codegen.js
+++ /dev/null
@@ -1,22 +0,0 @@
-const { generate } = require('graphql-code-generator')
-const path = require('path')
-
-const basePath = path.join(__dirname, '..', '..', 'src', 'mol-model-props', 'rcsb', 'graphql')
-
-generate({
-    schema: 'http://rest-staging.rcsb.org/graphql',
-    documents: {
-        [path.join(basePath, 'symmetry.gql.ts')]: {
-            loader: path.join(__dirname, 'loader.js')
-        },
-    },
-    generates: {
-        [path.join(basePath, 'types.ts')]: {
-            plugins: ['time', 'typescript-common', 'typescript-client']
-        }
-    },
-    overwrite: true,
-    config: path.join(__dirname, 'codegen.json')
-}, true).then(
-    () => console.log('done')
-).catch(e => console.error(e))
\ No newline at end of file
diff --git a/data/rcsb-graphql/codegen.json b/data/rcsb-graphql/codegen.json
deleted file mode 100644
index 999ad7af74c73c723b832e5b2a2410a2b0705c87..0000000000000000000000000000000000000000
--- a/data/rcsb-graphql/codegen.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-    "flattenTypes": true,
-    "generatorConfig": {
-        "immutableTypes": true
-    }
-}
\ No newline at end of file
diff --git a/data/rcsb-graphql/codegen.yml b/data/rcsb-graphql/codegen.yml
new file mode 100644
index 0000000000000000000000000000000000000000..0a8f0c4ced69092282e1f016ac925404e3b609eb
--- /dev/null
+++ b/data/rcsb-graphql/codegen.yml
@@ -0,0 +1,11 @@
+schema: http://data-staging.rcsb.org/graphql
+documents: './src/mol-model-props/rcsb/graphql/symmetry.gql.ts'
+generates:
+  './src/mol-model-props/rcsb/graphql/types.d.ts':
+    plugins:
+      - add: '/* eslint-disable */'
+      - time
+      - typescript
+      - typescript-operations
+    config:
+      immutableTypes: true
\ No newline at end of file
diff --git a/data/rcsb-graphql/loader.js b/data/rcsb-graphql/loader.js
deleted file mode 100644
index 73e76e1c421b88367f334b95621e53710fe5d153..0000000000000000000000000000000000000000
--- a/data/rcsb-graphql/loader.js
+++ /dev/null
@@ -1,14 +0,0 @@
-const { parse } = require('graphql');
-const { readFileSync } = require('fs');
-
-module.exports = function(docString, config) {
-    const str = readFileSync(docString, { encoding: 'utf-8' }).trim()
-                    .replace(/^export default `/, '')
-                    .replace(/`$/, '')
-    return [
-        {
-            filePath: docString,
-            content: parse(str)
-        }
-    ];
-};
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index a7f6d85fbfaf33b2ac20e3687baa7223fdc810a5..df1d45362823f9814a7971554c7655415b20e998 100644
Binary files a/package-lock.json and b/package-lock.json differ
diff --git a/package.json b/package.json
index 5b07bebe8bf6c7b2963297c4e0067835414d88c0..0a0a11dd3e5820edc189d9f72a3e6a4de70407cc 100644
--- a/package.json
+++ b/package.json
@@ -63,6 +63,13 @@
   ],
   "license": "MIT",
   "devDependencies": {
+    "@graphql-codegen/add": "^1.11.2",
+    "@graphql-codegen/cli": "^1.11.2",
+    "@graphql-codegen/time": "^1.11.2",
+    "@graphql-codegen/typescript": "^1.11.2",
+    "@graphql-codegen/typescript-graphql-files-modules": "^1.11.2",
+    "@graphql-codegen/typescript-graphql-request": "^1.11.2",
+    "@graphql-codegen/typescript-operations": "^1.11.2",
     "@typescript-eslint/eslint-plugin": "^2.17.0",
     "@typescript-eslint/eslint-plugin-tslint": "^2.17.0",
     "@typescript-eslint/parser": "^2.17.0",
@@ -75,14 +82,12 @@
     "extra-watch-webpack-plugin": "^1.0.3",
     "file-loader": "^5.0.2",
     "fs-extra": "^8.1.0",
-    "graphql-code-generator": "^0.18.2",
-    "graphql-codegen-time": "^0.18.2",
-    "graphql-codegen-typescript-template": "^0.18.2",
     "http-server": "^0.12.1",
     "jest": "^25.1.0",
     "jest-raw-loader": "^1.0.1",
     "mini-css-extract-plugin": "^0.9.0",
     "node-sass": "^4.13.1",
+    "pascal-case": "^3.1.1",
     "raw-loader": "^4.0.0",
     "resolve-url-loader": "^3.1.1",
     "sass-loader": "^8.0.2",