diff --git a/recipe/aarch_site.cfg b/recipe/aarch_site.cfg
deleted file mode 100644
index fcb89f4..0000000
--- a/recipe/aarch_site.cfg
+++ /dev/null
@@ -1,6 +0,0 @@
-[openblas]
-libraries = armpl_lp64
-library_dirs = $PREFIX/lib
-include_dirs = $PREFIX/include
-runtime_library_dirs = $PREFIX/lib
-
diff --git a/recipe/conda_build_config.yaml b/recipe/conda_build_config.yaml
deleted file mode 100644
index 5a25b5e..0000000
--- a/recipe/conda_build_config.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-# When building out the initial package set for a new Python version / MKL version the
-# recommendation is to build numpy-base but not numpy, then build
-# mkl_fft and mkl_random, and then numpy.
-# If only_build_numpy_base: yes, build numpy-base only; otherwise build all the outputs.
-only_build_numpy_base: no
diff --git a/recipe/f2py.bat b/recipe/f2py.bat
index e532299..4bbe5ce 100644
--- a/recipe/f2py.bat
+++ b/recipe/f2py.bat
@@ -1,4 +1,4 @@
 :: This wrapper script is necessary to make the "f2py" command on windows work
 
 @SET "PYTHON_EXE=%~dp0\..\python.exe"
-call "%PYTHON_EXE%" "%~dp0\f2py.py" %*
\ No newline at end of file
+call "%PYTHON_EXE%" "%~dp0\f2py.py" %*
diff --git a/recipe/install_base.bat b/recipe/install_base.bat
deleted file mode 100644
index 9d962d2..0000000
--- a/recipe/install_base.bat
+++ /dev/null
@@ -1,12 +0,0 @@
-:: site.cfg should not be defined here.  It is provided by blas devel packages (either mkl-devel or openblas-devel)
-
-COPY %PREFIX%\site.cfg site.cfg
-
-%PYTHON% -m pip install --no-deps --ignore-installed -v .
-if errorlevel 1 exit 1
-
-XCOPY %RECIPE_DIR%\f2py.bat %SCRIPTS% /s /e
-if errorlevel 1 exit 1
-
-del %SCRIPTS%\f2py.exe
-if errorlevel 1 exit 1
\ No newline at end of file
diff --git a/recipe/install_base.sh b/recipe/install_base.sh
deleted file mode 100644
index 98c0a6b..0000000
--- a/recipe/install_base.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/bash
-
-set -e
-
-# site.cfg is provided by blas devel packages (either mkl-devel or openblas-devel)
-case $( uname -m ) in
-aarch64) cp $PREFIX/aarch_site.cfg site.cfg;;
-*)       cp $PREFIX/site.cfg site.cfg;;
-esac
-
-${PYTHON} -m pip install --no-deps --ignore-installed -v .
diff --git a/recipe/meta.yaml b/recipe/meta.yaml
index 0eada87..22b1a2d 100644
--- a/recipe/meta.yaml
+++ b/recipe/meta.yaml
@@ -1,124 +1,93 @@
-{% set version = "1.20.3" %}
+{% set version = "1.21.1" %}
 
 package:
-  name: numpy_and_numpy_base
+  name: numpy
   version: {{ version }}
 
 source:
   url: https://github.com/numpy/numpy/releases/download/v{{ version }}/numpy-{{ version }}.tar.gz
-  sha256: b7340f0628ce1823c151e3d2a2a8cba2a3ff1357fba4475a24b1816e75c21f90
+  sha256: 504ced5d900fd5724c74ebf5dbb03572c04074bec9baa24b5646c66a2450e654
   patches:
-    - patches/0001-Obtain-and-prefer-custom-gfortran-from-env-variable.patch
-    - patches/0002-intel_mkl-version.patch              # [blas_impl == "mkl"]
-    - patches/0003-intel_init_mkl.patch                 # [blas_impl == "mkl"]
-    - patches/0004-disable-autorun-for-cmd-test.patch   # [win]
-    - patches/0005-array_coercion_fix.patch             # [blas_impl == "mkl" and win]
-    - patches/0006-popcnt_fix.patch                     # [blas_impl == "mkl" and win]
+    # carry numpy/numpy#19450 to help with flaky hypothesis errors
+    - patches/0001-TST-Simplify-property-test.patch
 
 build:
   number: 0
-  # numpy 1.20.0 no longer supports Python 3.6: https://numpy.org/doc/stable/release/1.20.0-notes.html
-  # "The Python versions supported for this release are 3.7-3.9, support for Python 3.6 has been dropped"
-  skip: True  # [(blas_impl == 'openblas' and win) or py2k or py<37]
-  force_use_keys:
-    - python
+  skip: true  # [py<37]
+  entry_points:
+    - f2py = numpy.f2py.f2py2e:main  # [win]
 
 requirements:
   build:
-    - patch     # [not win]
-    - m2-patch  # [win]
+    - python                                 # [build_platform != target_platform]
+    - cross-python_{{ target_platform }}     # [build_platform != target_platform]
+    - cython                                 # [build_platform != target_platform]
+    - {{ compiler('c') }}
+  host:
+    - python
+    - pip
+    - cython
+    - libblas
+    - libcblas
+    - liblapack
+  run:
+    - python
+  run_constrained:
+    # enforce eviction of package from anaconda defaults
+    - numpy-base <0a0
 
-outputs:
-  # this one has all the actual contents
-  - name: numpy-base
-    script: install_base.sh   # [unix]
-    script: install_base.bat  # [win]
-    build:
-      entry_points:
-        - f2py = numpy.f2py.f2py2e:main  # [win]
-    requirements:
-      build:
-        - {{ compiler("c") }}
-        # libllvm10 10.0.0 build 1 has an issue building numpy, use build 0
-        - libllvm10 10.0.0 h21ff451_0  # [osx]
-        - armpl #[aarch64]
-      host:
-        - python
-        - pip
-        - cython >=0.29.21
-        - mkl-devel  {{ mkl }}  # [blas_impl == "mkl"]
-        - openblas-devel {{ openblas }}  # [blas_impl == "openblas"]
-      run:
-        - python
-    # When building out the initial package set for a new Python version / MKL version the
-    # recommendation is to build numpy-base but not numpy, then build
-    # mkl_fft and mkl_random, and then numpy.
-    # If only_build_numpy_base: "yes", build numpy-base only; otherwise build all the outputs.
-    {% if only_build_numpy_base != 'yes' %}
-    test:
-      commands:
-        - test -e $SP_DIR/numpy/distutils/site.cfg     # [unix]
-        - IF NOT EXIST %SP_DIR%\numpy\distutils\site.cfg exit 1  # [win]
+{% set tests_to_skip = "_not_a_real_test" %}
+# Seems to fail with current version of glibc for large numbers
+# https://github.com/numpy/numpy/issues/15179
+{% set tests_to_skip = tests_to_skip + " or test_sincos_float32" %}                    # [linux64]
+# https://github.com/numpy/numpy/issues/15243
+{% set tests_to_skip = tests_to_skip + " or test_loss_of_precision[complex256]" %}     # [ppc64le]
+# Probably needs too much memory on ppc64le, it sometimes fails on travis
+{% set tests_to_skip = tests_to_skip + " or test_large_archive or test_big_arrays" %}  # [ppc64le]
+# the following skips are the longest running tests at time of writing; all over 45sec, up to 750sec
+# skipping is done purely to stop pypy jobs from regularly timing out on drone/travis
+{% if (aarch64 or ppc64le) and (python_impl == "pypy") %}
+    {% set tests_to_skip = tests_to_skip + " or test_may_share_memory_easy_fuzz or test_may_share_memory_harder_fuzz"
+                                         + " or test_binary_ufunc_1d_manual or test_diophantine_fuzz"
+                                         + " or test_unary_ufunc_call_fuzz or test_unary_gufunc_fuzz"
+                                         + " or test_big_arrays or test_large_archive or test_large_zip"
+                                         + " or test_closing_fid or test_iter_buffered_reduce_reuse"
+                                         + " or test_count_nonzero_all or test_divmod_128_64"
+                                         + " or (test_generalized_sq_cases "
+                                         + "     and (TestCond or TestDet or TestInv or TestSolve))" %}
+{% endif %}
 
-  # numpy is a metapackage that may include mkl_fft and mkl_random both of
-  # which require numpy-base to build
-  - name: numpy
-    requirements:
-      build:
-        # for runtime alignment
-        - {{ compiler('c') }}
-        - armpl # [aarch64]
-      host:
-        - python
-        # these import blas metapackages to ensure consistency with downstream libs that also use blas
-        - mkl-devel  {{ mkl }}  # [blas_impl == 'mkl']
-        - openblas-devel {{ openblas }}  # [blas_impl == 'openblas']
-      run:
-        - python
-        - {{ pin_subpackage('numpy-base', exact=True) }}
-        # openblas or mkl runtime included with run_exports
-        - mkl_fft  # [blas_impl == 'mkl']
-        - mkl_random # [blas_impl == 'mkl' and (not win or vc>=14)]
-        # - mkl_umath  # [blas_impl == 'mkl']
-    {% endif %}
-    {% set tests_to_skip = "_not_a_real_test" %}
-    # Seems to fail with current version of blas for large numbers
-    # https://github.com/conda-forge/numpy-feedstock/pull/179#issuecomment-569591828
-    {% set tests_to_skip = tests_to_skip + " or test_sincos_float32" %}  # [linux64]
-    # Flawed test when using MKL
-    # https://github.com/numpy/numpy/issues/16769
-    {% set tests_to_skip = tests_to_skip + " or test_overrides" %}  # [blas_impl == 'mkl']
-    # Only the complex256 system is failing, but I don't know how to skip it on its own
-    # https://github.com/numpy/numpy/issues/15243
-    {% set tests_to_skip = tests_to_skip + " or test_loss_of_precision" %}  # [ppc64le or aarch64 or s390x]
-    test:
-      requires:
-        - pip     # force installation or `test_api_importable` will fail
-        - pytest
-        - hypothesis
-        - {{ compiler('c') }}  # [not osx]
-        - {{ compiler('fortran') }}  # [not osx]
-        - nomkl  # [x86 and blas_impl != 'mkl']
-      commands:
-        - f2py -h
-        - python -c "import numpy; numpy.show_config()"
-        - export OPENBLAS_NUM_THREADS=1  # [unix]
-        - set OPENBLAS_NUM_THREADS=1  # [win]
-        - pytest -vvv --pyargs numpy -k "not ({{ tests_to_skip }})" --durations=0
-      imports:
-        - numpy
-        - numpy.linalg.lapack_lite
+test:
+  requires:
+    - pytest
+    - pytest-xdist  # [aarch64]
+    - hypothesis
+    - setuptools
+  commands:
+    - f2py -h
+    {% set numproc = "-nauto" if aarch64 else "" %}
+    # np.test will show SIMD features of agent (some failures occur depending on presence/absence of e.g. AVX512)
+    - python -c "import numpy as np; np.test(verbose=3, durations=50, extra_argv=['-k', 'not ({{ tests_to_skip }})', '{{ numproc }}'])"
+  imports:
+    - numpy
+    - numpy.core.multiarray
+    - numpy.core._multiarray_tests
+    - numpy.core.numeric
+    - numpy.core._operand_flag_tests
+    - numpy.core._struct_ufunc_tests
+    - numpy.core._rational_tests
+    - numpy.core.umath
+    - numpy.core._umath_tests
+    - numpy.linalg.lapack_lite
+    - numpy.random.mtrand
 
 about:
   home: http://numpy.scipy.org/
-  license: BSD 3-Clause
+  license: BSD-3-Clause
   license_file: LICENSE.txt
   summary: Array processing for numbers, strings, records, and objects.
-  description: |
-    NumPy is the fundamental package needed for scientific computing with Python.
   doc_url: https://docs.scipy.org/doc/numpy/reference/
   dev_url: https://github.com/numpy/numpy
-  dev_source_url: https://github.com/numpy/numpy/tree/master/doc
 
 extra:
   recipe-maintainers:
@@ -127,4 +96,6 @@ extra:
     - pelson
     - rgommers
     - ocefpaf
-    - chenghlee
+    - isuruf
+    - xhochy
+    - h-vetinari
diff --git a/recipe/patches/0001-Obtain-and-prefer-custom-gfortran-from-env-variable.patch b/recipe/patches/0001-Obtain-and-prefer-custom-gfortran-from-env-variable.patch
deleted file mode 100644
index 93a6ec1..0000000
Binary files a/recipe/patches/0001-Obtain-and-prefer-custom-gfortran-from-env-variable.patch and /dev/null differ
diff --git a/recipe/patches/0002-intel_mkl-version.patch b/recipe/patches/0002-intel_mkl-version.patch
deleted file mode 100644
index 975f087..0000000
Binary files a/recipe/patches/0002-intel_mkl-version.patch and /dev/null differ
diff --git a/recipe/patches/0003-intel_init_mkl.patch b/recipe/patches/0003-intel_init_mkl.patch
deleted file mode 100644
index 43aede9..0000000
Binary files a/recipe/patches/0003-intel_init_mkl.patch and /dev/null differ
diff --git a/recipe/patches/0004-disable-autorun-for-cmd-test.patch b/recipe/patches/0004-disable-autorun-for-cmd-test.patch
deleted file mode 100644
index f8972da..0000000
Binary files a/recipe/patches/0004-disable-autorun-for-cmd-test.patch and /dev/null differ
diff --git a/recipe/patches/0005-array_coercion_fix.patch b/recipe/patches/0005-array_coercion_fix.patch
deleted file mode 100644
index bc3e8b5..0000000
Binary files a/recipe/patches/0005-array_coercion_fix.patch and /dev/null differ
diff --git a/recipe/patches/0006-popcnt_fix.patch b/recipe/patches/0006-popcnt_fix.patch
deleted file mode 100644
index 7e45764..0000000
Binary files a/recipe/patches/0006-popcnt_fix.patch and /dev/null differ
