diff --git a/ShellB3/shallbethree.sh b/ShellB3/shallbethree.sh
index f8491ba0551d2fe91626bea4753d0768df2ee9f6..3d0f1330ce521772cd34ed7d983043086b5de25a 100755
--- a/ShellB3/shallbethree.sh
+++ b/ShellB3/shallbethree.sh
@@ -2003,7 +2003,7 @@ if isDarwin ; then
       export SB3CXXFLAGS="-isysroot ${SYSROOT} ${CPUFLAGS} -mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET} -stdlib=libc++"
       export SB3LDFLAGS="-isysroot ${SYSROOT} ${CPUFLAGS} -lc++ -lc++abi -mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET}" #--sysroot=$SYSROOT"
       export SB3CPPFLAGS="-stdlib=libc++ -mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET}" #--sysroot=$SYSROOT"
-      export SYS_FORBIDDENLIBS="libstdc++,libssl"
+      export SYS_FORBIDDENLIBS="libstdc++,libssl,libblas,libcblas,liblapack,Accelerate,libgrib_api"
       export USE_PORTABLE_LIBTOOL=YES
       export IGNORE_PIP=YES #PIP's expectation of ssl borks everything
       ;;
@@ -2066,7 +2066,7 @@ elif isLinux ; then
   if [ -z "${MACHTYPE}" ] ; then
     export MACHTYPE=${CPUTYPE}
   fi
-  export SYS_FORBIDDENLIBS=""
+  export SYS_FORBIDDENLIBS="libblas,libcblas,liblapack,libgrib_api" #deprecated
   echo "Checking for bundled compilers"
   _find_cots ACLANG clang $BASE/sysbin $BASE/bin || echo bundled clang not found
   _find_cots AFLANG flang $BASE/sysbin $BASE/bin || echo bundled flang not found
@@ -3200,10 +3200,12 @@ mk_numpy() {
   resume_tracker
 
   echo unpacking numpy...
-  _find_cots_lib BLAS libblas $BASE $COTS_HOME ${SYSROOT}/usr ||  oops "numpy requires blas"
-  _find_cots_lib CBLAS libcblas $BASE $COTS_HOME ${SYSROOT}/usr ||  oops "numpy requires cblas"
-  _find_cots_lib LAPACK liblapack $BASE $COTS_HOME ${SYSROOT}/usr ||  oops "numpy requires lapack"
   _find_cots_lib OPENBLAS libopenblas $BASE $COTS_HOME || echo "numpy didn't find openblas. using blas"
+  if [ -z "${OPENBLAS}" ] ; then
+    _find_cots_lib BLAS libblas $BASE $COTS_HOME ${SYSROOT}/usr ||  oops "numpy requires blas or openblas"
+    _find_cots_lib CBLAS libcblas $BASE $COTS_HOME ${SYSROOT}/usr ||  oops "numpy requires cblas or openblas"
+    _find_cots_lib LAPACK liblapack $BASE $COTS_HOME ${SYSROOT}/usr ||  oops "numpy requires lapack or openblas"
+  fi
 
   if isTrue USING_FLANG ; then
     export FLIB=flang
@@ -3500,6 +3502,7 @@ mk_eccodes() {
       install_name_tool $( for g in lib/libeccodes*.dylib ; do \
           echo "-change ./$g @rpath/$g -change $(basename $g) @rpath/$g -change @rpath/$(basename $g) @rpath/$g" ; \
         done ) \
+      -change /usr/local/lib/libgcc_s.1.dylib ${BASE}/lib/libgcc_s.1.dylib \
       -change @rpath/Python @rpath/Library/Frameworks/Python.framework/Versions/${PYFSVER}/Python $f ; \
       reid $f ; \
       install_name_tool -add_rpath @loader_path/.. $f ; fi ; done
@@ -3604,6 +3607,12 @@ mk_hdf5() {
       --enable-shared $( isDarwin && echo "--build=${PLATFORM}" ) --with-pic \
       --with-zlib=$ZLIB --enable-cxx $( isNotTrue USING_FLANG && echo "--enable-fortran" ) --with-pthread  $( test -n "$SZLIB" && echo --with-szlib=$SZLIB )
 
+  if isDarwin ; then
+    for f in $( find lib* -name *.dylib -type f ) ; do
+      install_name_tool -change /usr/local/lib/libgcc_s.1.dylib ${BASE}/lib/libgcc_s.1.dylib $f
+    done
+  fi
+
   return 0
 
 }
@@ -3696,8 +3705,11 @@ mk_cython() {
 mk_numexpr() {
   resume_tracker && return 0
   echo extracting numexpr...
-  _find_cots_lib BLAS libblas $BASE $COTS_HOME ${SYSROOT}/usr || oops "numexpr requires blas"
-  _find_cots_lib LAPACK liblapack $BASE $COTS_HOME ${SYSROOT}/usr || oops "numexpr requires lapack"
+  _find_cots_lib OPENBLAS libopenblas $BASE $COTS_HOME || echo "octave didn't find openblas. using blas"
+  if [ -z "${OPENBLAS}" ] ; then
+  _find_cots_lib BLAS libblas $BASE $COTS_HOME ${SYSROOT}/usr || oops "numexpr requires blas or openblas"
+  _find_cots_lib LAPACK liblapack $BASE $COTS_HOME ${SYSROOT}/usr || oops "numexpr requires lapack or openblas"
+  fi
 
   _setup_build_install numexpr src/numexpr-${NUMEXPRVER}.tar.gz numexpr-${NUMEXPRVER}
 }
@@ -3803,7 +3815,7 @@ SCRIPT
 
 __ssmk() {
   resume_tracker && return 0
-  ( cd build/SuiteSparse && make config \
+  ( cd build/SuiteSparse && make config "$@" \
    && make library \
    && MAKEFLAGS="" make install ) || return $?
 }
@@ -3823,8 +3835,11 @@ mk_suitesparse() {
   fi
 
   echo unpacking suitesparse...
-  _find_cots_lib BLAS libblas $BASE $COTS_HOME ${SYSROOT}/usr ||  oops "suitesparse requires blas"
-  _find_cots_lib LAPACK liblapack $BASE $COTS_HOME ${SYSROOT}/usr  || oops "suitesparse requires lapack"
+  _find_cots_lib OPENBLAS libopenblas $BASE $COTS_HOME || echo "octave didn't find openblas. using blas"
+  if [ -z "${OPENBLAS}" ] ; then
+  _find_cots_lib BLAS libblas $BASE $COTS_HOME ${SYSROOT}/usr ||  oops "suitesparse requires blas or openblas"
+  _find_cots_lib LAPACK liblapack $BASE $COTS_HOME ${SYSROOT}/usr  || oops "suitesparse requires lapack or openblas"
+  fi
   _find_cots_lib METIS libmetis $BASE $COTS_HOME ${SYSROOT}/usr || export METISLIBFILE="/dev/null"
   _find_cots_lib METISINC metislib.h $BASE/include $COTS_HOME/include ${SYSROOT}/usr/include || export METISLIBFILE="/dev/null"
 
@@ -3852,7 +3867,10 @@ mk_suitesparse() {
 if isTrue DISABLE_GRAPHBLAS ; then
   mv Makefile _oldmake && grep -v GraphBLAS _oldmake > Makefile
 fi
-
+for f in \$( find * -type f -name SuiteSparse_config.mk ) ; do
+  echo Patching \$f
+  sed -i.old -e 's,BLAS = -framework Accelerate,,g' -e 's,LAPACK = -framework Accelerate,,g' \$f
+done
 SCRIPT
 
   #copied from _cmake_make()
@@ -3884,12 +3902,20 @@ PATCH
   _decompress_in_build "${name}" ${tarball} "${buildir}" "$@"
 
   echo "building suitesparse for $BASE"
+  if [ -z "${OPENBLAS}" ] ; then
   CMAKE_OPTIONS="${CMAKEEXTRA}" CC="$MYCC" MY_METIS_LIB="${METISLIBFILE}" MY_METIS_INC="${METISINC}" \
     GPU_CONFIG=-DNPARTITION CFLAGS="-fPIC $SB3FLAGS" CHOLMOD_CONFIG=-DNPARTITION \
     CF="${CFLAGS} -O3 -fexceptions ${LINUXCPUFLAGS}" INSTALL="${BASE}" CFOPENMP=" -fexceptions " \
     BLAS="-L${BLASLIBDIR} ${LDFLAGS} -lblas ${FLIBS}" LAPACK="-L${LAPACKLIBDIR} ${LDFLAGS} -llapack ${FLIBS}" __ssmk \
-   || oops "suitesparse build failed"
-
+   || oops "suitesparse build with blas/lapack failed"
+  else
+  CMAKE_OPTIONS="${CMAKEEXTRA}" CC="$MYCC" MY_METIS_LIB="${METISLIBFILE}" MY_METIS_INC="${METISINC}" \
+    GPU_CONFIG=-DNPARTITION CFLAGS="-fPIC $SB3FLAGS" CHOLMOD_CONFIG=-DNPARTITION \
+    CF="${CFLAGS} -O3 -fexceptions ${LINUXCPUFLAGS}" INSTALL="${BASE}" CFOPENMP=" -fexceptions " \
+    OPENBLAS="-L${OPENBLASLIBDIR} ${LDFLAGS} -lopenblas ${FLIBS}" \
+    BLAS="-L${OPENBLASLIBDIR} ${LDFLAGS} -lopenblas ${FLIBS}" LAPACK="-L${OPENBLASLIBDIR} ${LDFLAGS} -lopenblas ${FLIBS}" __ssmk \
+    BLAS="-L${OPENBLASLIBDIR} ${LDFLAGS} -lopenblas ${FLIBS}" LAPACK="-L${OPENBLASLIBDIR} ${LDFLAGS} -lopenblas ${FLIBS}" || oops "suitesparse build with openblas failed"
+  fi
   _compiler_proxy_end ld MYLD
 
    reid ${BASE}/lib*/libgraphblas* ${BASE}/lib*/libmongoose* 
@@ -3900,9 +3926,11 @@ PATCH
 
 mk_scipy() {
   resume_tracker && return 0
-  _find_cots_lib BLAS libblas $BASE $COTS_HOME ${SYSROOT}/usr || oops "scipy requires blas"
-  _find_cots_lib LAPACK liblapack $BASE $COTS_HOME ${SYSROOT}/usr ||oops "scipy requires lapack"
   _find_cots_lib OPENBLAS libopenblas $BASE $COTS_HOME || echo "numpy didn't find openblas. using blas"
+  if [ -z "${OPENBLAS}" ] ; then
+  _find_cots_lib BLAS libblas $BASE $COTS_HOME ${SYSROOT}/usr || oops "scipy requires blas or openblas"
+  _find_cots_lib LAPACK liblapack $BASE $COTS_HOME ${SYSROOT}/usr ||oops "scipy requires lapack or openblas"
+  fi
 
   if isTrue USING_FLANG ; then
     export FLIB=flang
@@ -7752,8 +7780,12 @@ mk_octave() {
   isDarwin && OCTAVEEXTRA="${OCTAVEEXTRA} --with-x=no --disable-no-undefined" # --without-framework-carbon"
   #isDarwin && [ -n "$(clang --version | grep "LLVM 3.5" )" ] && OCTAVEEXTRA="${OCTAVEEXTRA} --without-jit" #jit triggers a bug in LLVM3.5
 
-  _find_cots_lib BLAS libblas $BASE $COTS_HOME ${SYSROOT}/usr || oops "octave needs blas"
-  _find_cots_lib LAPACK liblapack $BASE $COTS_HOME ${SYSROOT}/usr || oops "octave needs lapack"
+  _find_cots_lib OPENBLAS libopenblas $BASE $COTS_HOME || echo "octave didn't find openblas. using blas"
+  if [ -z "${OPENBLAS}" ] ; then
+    oops FIXME
+  _find_cots_lib BLAS libblas $BASE $COTS_HOME ${SYSROOT}/usr || oops "octave needs blas or openblas"
+  _find_cots_lib LAPACK liblapack $BASE $COTS_HOME ${SYSROOT}/usr || oops "octave needs lapack or openblas"
+  fi
   _find_cots_lib LIBREADLINE libreadline $BASE $COTS_HOME ${SYSROOT}/usr || oops "octave needs libreadline"
   _find_cots LIBMAGICK include/ImageMagick-6/Magick++.h $BASE || echo "making octave without magick" #oops "octave needs ImageMagick"
 
@@ -9380,9 +9412,6 @@ mk_core() {
     && mk_packaging \
     && mk_setuptools && mk_setuptools_scm \
     && mk_openblas \
-    && mk_blas \
-    && mk_cblas \
-    && mk_lapack \
     && mk_numpy \
     && mk_jpeg \
     && mk_cmake \
@@ -9560,9 +9589,7 @@ mk_iasi2fbf() {
     && mk_libffi \
     && mk_expat \
     && mk_apy \
-    && mk_blas \
-    && mk_cblas \
-    && mk_lapack \
+    && mk_openblas \
     && mk_numpy \
     && mk_eugene \
     && mk_setuptools \