diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index c85e22c12d78cb2e5a3ef753bc8baf4ee4cb3780..d0481192817877edea3b8deaaaf86b480fab2a11 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -48,19 +48,6 @@ jobs:
                 curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/build-and-test-py-project-within-miniconda.sh
                 . ./build-and-test-py-project-within-miniconda.sh
 
-    pytest2:
-        name: Conda Pytest Py2
-        runs-on: ubuntu-latest
-        steps:
-        -   uses: actions/checkout@v2
-        -   name: "Main Script"
-            run: |
-                sed 's/python=3/python=2.7/' .test-conda-env-py3.yml > .test-conda-env-py2.yml
-                cat .test-conda-env-py2.yml
-                CONDA_ENVIRONMENT=.test-conda-env-py2.yml
-                curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/build-and-test-py-project-within-miniconda.sh
-                . ./build-and-test-py-project-within-miniconda.sh
-
     pytest_twice:
         name: Pytest twice (for cache behavior) on Py${{ matrix.python-version }}
         runs-on: ubuntu-latest
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 8d5f9c4f1d5362e6daae421a81831bd718b24c0a..48bee8638df08ebe8c03a17f84c78851ff36466e 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,22 +1,3 @@
-Python 2.7 POCL:
-  script:
-  - export PY_EXE=python2.7
-  - export PYOPENCL_TEST=portable:pthread
-  - export EXTRA_INSTALL="pybind11 numpy mako"
-  - export LOOPY_NO_CACHE=1
-  - export NO_DOCTESTS=1
-  - curl -L -O -k https://gitlab.tiker.net/inducer/ci-support/raw/master/build-and-test-py-project.sh
-  - ". ./build-and-test-py-project.sh"
-  tags:
-  - python2.7
-  - pocl
-  except:
-  - tags
-  artifacts:
-    reports:
-      junit: test/pytest.xml
-
-
 Python 3 POCL:
   script:
   - export PY_EXE=python3
@@ -114,20 +95,6 @@ Pylint:
   except:
   - tags
 
-CentOS binary:
-  script:
-  - (cd build-helpers; ./make-linux-build-docker.sh --nodate)
-  - (cd ./build-helpers; ./loopy-centos6 ../examples/fortran/sparse.floopy)
-  artifacts:
-    expire_in: 4 weeks
-    paths:
-    - build-helpers/loopy-centos6
-  tags:
-  - docker
-  only:
-  - master
-  retry: 2
-
 Documentation:
   script:
   - EXTRA_INSTALL="pybind11 numpy"
diff --git a/build-helpers/.gitignore b/build-helpers/.gitignore
deleted file mode 100644
index fef83014eecb14936006b90afc65595dd7d30b77..0000000000000000000000000000000000000000
--- a/build-helpers/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-loopy-*-20[0-9][0-9]*
diff --git a/build-helpers/loopy.spec b/build-helpers/loopy.spec
deleted file mode 100644
index 08c0b6efe0efd3ad419b6565fd396c2f805eeab7..0000000000000000000000000000000000000000
--- a/build-helpers/loopy.spec
+++ /dev/null
@@ -1,70 +0,0 @@
-# -*- mode: python -*-
-
-from os.path import basename, dirname, join
-from glob import glob
-
-single_file = True
-
-# This makes the executable spew debug info.
-debug = False
-
-from os.path import expanduser
-
-import packaging # pip install packaging to add
-
-a = Analysis(['../bin/loopy'],
-             pathex=[expanduser('~/src/loopy')],
-             hiddenimports=[
-                "decorator",
-                "appdirs",
-                "packaging.markers",
-                "packaging.specifiers",
-                "packaging.version",
-                "packaging.requirements",
-                ],
-             hookspath=None,
-             runtime_hooks=None,
-             excludes=["hedge", "meshpy", "pyopencl", "PIL"]
-             )
-
-import ply.lex
-import ply.yacc
-
-
-a.datas += [
-  (join("py-src", "ply", "lex", basename(fn)), fn, "DATA")
-  for fn in glob(join(dirname(ply.lex.__file__), "*.py"))
-  ] + [
-  (join("py-src", "ply", "yacc", basename(fn)), fn, "DATA")
-  for fn in glob(join(dirname(ply.yacc.__file__), "*.py"))
-  ]
-
-pyz = PYZ(a.pure)
-
-if single_file:
-    exe = EXE(pyz,
-              a.scripts,
-              a.binaries,
-              a.zipfiles,
-              a.datas,
-              name='loopy',
-              debug=debug,
-              strip=None,
-              upx=True,
-              console=True)
-else:
-    exe = EXE(pyz,
-              a.scripts,
-              exclude_binaries=True,
-              name='loopy',
-              debug=debug,
-              strip=None,
-              upx=True,
-              console=True)
-    coll = COLLECT(exe,
-                   a.binaries,
-                   a.zipfiles,
-                   a.datas,
-                   strip=None,
-                   upx=True,
-                   name='loopy')
diff --git a/build-helpers/make-linux-build-docker-inner-part-2.sh b/build-helpers/make-linux-build-docker-inner-part-2.sh
deleted file mode 100755
index 035634b16072e0188270abd8736dab99ce31dada..0000000000000000000000000000000000000000
--- a/build-helpers/make-linux-build-docker-inner-part-2.sh
+++ /dev/null
@@ -1,35 +0,0 @@
-#! /bin/bash
-
-set -e
-set -x
-
-VENV_VERSION="virtualenv-15.2.0"
-rm -Rf "$VENV_VERSION"
-curl -k https://files.pythonhosted.org/packages/b1/72/2d70c5a1de409ceb3a27ff2ec007ecdd5cc52239e7c74990e32af57affe9/$VENV_VERSION.tar.gz | tar xfz -
-
-$VENV_VERSION/virtualenv.py --system-site-packages --no-setuptools .env
-
-source .env/bin/activate
-
-curl -k https://bootstrap.pypa.io/ez_setup.py | python -
-curl -k https://gitlab.tiker.net/inducer/pip/raw/7.0.3/contrib/get-pip.py | python -
-
-pip install packaging
-
-PYTHON_VER=$(python -c 'import sys; print(".".join(str(s) for s in sys.version_info[:2]))')
-pip install git+https://github.com/pyinstaller/pyinstaller.git@413c37bec126c0bd26084813593f65128966b4b7
-
-git clone --recursive git://github.com/inducer/loopy
-cd loopy
-
-grep -v pyopencl requirements.txt > myreq.txt
-
-# needed for pyinstaller package to be usable
-echo packaging >> myreq.txt
-
-pip install -r myreq.txt
-python setup.py install
-
-chown -R user /tmp/build
-
-su user -p -c "cd /tmp/build && source .env/bin/activate && cd loopy && ./build-helpers/run-pyinstaller.sh"
diff --git a/build-helpers/make-linux-build-docker-inner.sh b/build-helpers/make-linux-build-docker-inner.sh
deleted file mode 100755
index a7f621b1ef21676898d2283d93f8a54f086e5d9d..0000000000000000000000000000000000000000
--- a/build-helpers/make-linux-build-docker-inner.sh
+++ /dev/null
@@ -1,15 +0,0 @@
-#! /bin/bash
-
-set -e
-set -x
-
-mkdir /tmp/build
-cd /tmp/build
-
-useradd -d /home/user -m -s /bin/bash user
-
-yum install -y centos-release-scl
-yum install -y git python27 python27-python-devel python27-numpy tar gcc gcc-c++ mercurial libffi-devel
-
-scl enable python27 /mnt/make-linux-build-docker-inner-part-2.sh
-
diff --git a/build-helpers/make-linux-build-docker.sh b/build-helpers/make-linux-build-docker.sh
deleted file mode 100755
index fb0cfb587d654698800bfdc827259691bc056fb7..0000000000000000000000000000000000000000
--- a/build-helpers/make-linux-build-docker.sh
+++ /dev/null
@@ -1,28 +0,0 @@
-#! /bin/bash
-
-# should be run in this directory (build-helpers)
-
-if test "$1" = "--nodate"; then
-  TGT_NAME=loopy-centos6
-else
-  TGT_NAME=loopy-centos6-$(date +"%Y-%m-%d")
-fi
-
-echo "Generating $TGT_NAME..."
-
-set -e
-set -x
-
-docker pull centos:6
-
-CNT=$(docker create -t -v $(pwd):/mnt centos:6 /mnt/make-linux-build-docker-inner.sh)
-echo "working in container $CNT"
-
-docker start -i $CNT
-
-docker cp $CNT:/tmp/build/loopy/dist/loopy $(pwd) || true
-
-mv loopy $TGT_NAME
-
-docker rm $CNT
-
diff --git a/build-helpers/run-pyinstaller.sh b/build-helpers/run-pyinstaller.sh
deleted file mode 100755
index 50f9d85dccc503be2a2ccfb6c0e3d6aa28216981..0000000000000000000000000000000000000000
--- a/build-helpers/run-pyinstaller.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#! /bin/bash
-
-# run this from the loopy root directory
-
-rm -Rf dist build
-
-pyinstaller \
-  --workpath=build/pyinstaller \
-  build-helpers/loopy.spec
diff --git a/build-helpers/upload.sh b/build-helpers/upload.sh
deleted file mode 100755
index 57b8a873b9395954d76a8fd16f8ca9a261e8baa3..0000000000000000000000000000000000000000
--- a/build-helpers/upload.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#! /bin/bash
-
-set -e
-
-scp "$1" tiker.net:public_html/pub/loopy-binaries/
diff --git a/doc/index.rst b/doc/index.rst
index b77bbb16f413defe5010c75d28464051553b4486..8f114eb72cdc530dd4109257c4981118c5046f06 100644
--- a/doc/index.rst
+++ b/doc/index.rst
@@ -20,29 +20,6 @@ When you run this script, the following kernel is generated, compiled, and execu
 
 .. _static-binary:
 
-Want to try out loopy?
-----------------------
-
-There's no need to go through :ref:`installation` if you'd just like to get a
-feel for what loopy is.  Instead, you may
-`download a self-contained Linux binary <https://gitlab.tiker.net/inducer/loopy/-/jobs/66778/artifacts/browse/build-helpers/>`_.
-This is purposefully built on an ancient Linux distribution, so it should work
-on most versions of Linux that are currently out there.
-
-Once you have the binary, do the following::
-
-    chmod +x ./loopy-centos6
-    ./loopy-centos6 --target=opencl hello-loopy.loopy
-    ./loopy-centos6 --target=cuda hello-loopy.loopy
-    ./loopy-centos6 --target=ispc hello-loopy.loopy
-
-Grab the example here: :download:`examples/python/hello-loopy.loopy <../examples/python/hello-loopy.loopy>`.
-
-You may also donwload the most recent version by going to the `list of builds
-<https://gitlab.tiker.net/inducer/loopy/builds>`_, clicking on the newest one
-of type "CentOS binary", clicking on "Browse" under "Build Artifacts", then
-navigating to "build-helpers", and downloading the binary from there.
-
 Places on the web related to Loopy
 ----------------------------------
 
diff --git a/loopy/version.py b/loopy/version.py
index 29abbc2de889b884de93e5fe39a1d996811c93c9..d69a3b574122622105e4b52c74ec8c595fc816b6 100644
--- a/loopy/version.py
+++ b/loopy/version.py
@@ -42,7 +42,7 @@ else:
 # }}}
 
 
-VERSION = (2019, 1)
+VERSION = (2020, 1)
 VERSION_STATUS = ""
 VERSION_TEXT = ".".join(str(x) for x in VERSION) + VERSION_STATUS
 
diff --git a/setup.py b/setup.py
index 72145fd1b64564919b6ef9f137166da0f08b3622..bba29986997e8e762ad52f38feae6311c4892c10 100644
--- a/setup.py
+++ b/setup.py
@@ -76,10 +76,7 @@ setup(name="loo.py",
           'License :: OSI Approved :: MIT License',
           'Natural Language :: English',
           'Programming Language :: Python',
-          'Programming Language :: Python :: 2.6',
-          'Programming Language :: Python :: 2.7',
-          'Programming Language :: Python :: 3.2',
-          'Programming Language :: Python :: 3.3',
+          'Programming Language :: Python :: 3',
           'Topic :: Scientific/Engineering',
           'Topic :: Scientific/Engineering :: Information Analysis',
           'Topic :: Scientific/Engineering :: Mathematics',