Copied from https://github.com/outrightmental/typescript-demo