Copied base from nathanjd/js-app