diff --git a/Golden_Repo/a/AMBER/AMBER-20-foss-2022a.eb b/Golden_Repo/a/AMBER/AMBER-20-foss-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..9247e073f452dd0c33e27f83ec52ccc8dba3e07b
--- /dev/null
+++ b/Golden_Repo/a/AMBER/AMBER-20-foss-2022a.eb
@@ -0,0 +1,121 @@
+easyblock = 'CMakeMake'
+
+name = 'AMBER'
+version = '20'
+versionsuffix = '-AmberTools-21'
+
+homepage = 'http://ambermd.org'
+description = """
+AMBER: 'Assisted Model Building with Energy Refinement' is a set of molecular
+mechanics force fields and a package of molecular simulation programs.
+
+Citation:
+D.A. Case, K. Belfon, I.Y. Ben-Shalom, S.R. Brozell, D.S. Cerutti,
+T.E. Cheatham, III, V.W.D. Cruzeiro, T.A. Darden, R.E. Duke, G. Giambasu,
+M.K. Gilson, H. Gohlke, A.W. Goetz, R. Harris, S. Izadi, S.A. Izmailov,
+K. Kasavajhala, A. Kovalenko, R. Krasny, T. Kurtzman, T.S. Lee, S. LeGrand,
+P. Li, C. Lin, J. Liu, T. Luchko, R. Luo, V. Man, K.M. Merz, Y. Miao,
+O. Mikhailovskii, G. Monard, H. Nguyen, A. Onufriev, F.Pan, S. Pantano,
+R. Qi, D.R. Roe, A. Roitberg, C. Sagui, S. Schott-Verdugo, J. Shen,
+C. Simmerling, N.R.Skrynnikov, J. Smith, J. Swails, R.C. Walker, J. Wang,
+L. Wilson, R.M. Wolf, X. Wu, Y. Xiong, Y. Xue, D.M. York
+and P.A. Kollman (2020),
+AMBER 2020, University of California, San Francisco.
+"""
+
+toolchain = {'name': 'foss', 'version': '2022a'}
+toolchainopts = {'pic': True}
+toolchainopts = {'openmp': True, 'usempi': True}
+
+builddependencies = [
+    ('CMake', '3.23.1'),
+    ('binutils', '2.38'),
+]
+dependencies = [
+    ('FFTW.MPI', '3.3.10'),
+    ('Boost', '1.79.0'),
+    ('flex', '2.6.4'),
+    ('NCCL', 'default', '-CUDA-11.7'),
+    ('netCDF', '4.9.0'),
+    ('netCDF-Fortran', '4.6.0'),
+    ('PnetCDF', '1.12.3'),
+    ('Python', '3.10.4'),
+    ('matplotlib', '3.5.2', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    ('mpi4py', '3.1.4', '', ('gompi', '2022a'))
+]
+
+sources = [
+    'AmberTools21.tar.bz2',
+    'Amber20.tar.bz2',
+]
+patches = [
+    'fix_nmrat_error.patch',
+    'adapt_to_python_3_10_api_changes.patch',
+    'AmberTools-21_CMake-FlexiBLAS.patch',
+    'AmberTools-21_fix_more_blas_argument_problems.patch',
+    'AmberTools-21_fix_rism_argument_mismatch.patch',
+    'AmberTools-21_fix_xray_fftpack_arg_mismatch.patch',
+    'Fix_FFTW_find_error_due_to_MPI_components.patch',
+    'Fix_netcdf_find_error_due_to_missed_F77_F90_interfaces.patch',
+]
+
+checksums = [
+    'f55fa930598d5a8e9749e8a22d1f25cab7fcf911d98570e35365dd7f262aaafd',
+    'a4c53639441c8cc85adee397933d07856cc4a723c82c6bea585cd76c197ead75',
+    '00394f987105f047cbacf5f002170a11720f0decbd399a59db6b3b6c8e950677',
+    'f5e7ff2fb5e782f5b64a70e750d1ccc6566fd600663dd339f1769ceca60f64d6',
+    '9543812c24c4b7842f64f1f8abaf2c92b5c4c0fadcdbd9811e76b81a778f0d36',
+    'c6279b57752239184b942d37f760749494ae0eff95236f3368c76ac0d2726a7c',
+    '14255e5739cec39303df570f06820c7532f7395e1b73b1e4104377984e2c9fc1',
+    '99c954e693659efc2a1d121f91510f56408006f0751d91595f45a34b03364e2f',
+    '468acfd764e8e3787f8f855e724a16ae11e92d36576994297eec26e6e0b41dd0',
+    '4f409c139ff49f61b1f617a34202b61223c2d8ae474ac9de62313aaad2284afd',
+]
+
+separate_build_dir = True
+local_build_mpi_parts = "TRUE"
+local_build_cuda_parts = "TRUE"
+local_build_cuda_nccl = "TRUE"
+
+preconfigopts = "CC=gcc && CXX=g++ && COMPILER=GNU "
+preconfigopts += " && cd %(builddir)s/amber20_src && "
+preconfigopts += " ./update_amber --update && cd ../easybuild_obj && "
+
+configopts = "-DCOMPILER=GNU -DCHECK_UPDATES=OFF -DAPPLY_UPDATES=OFF -DBUILD_GUI=FALSE "
+configopts += " -DINSTALL_TESTS=TRUE -DOPENMP=TRUE -DMPI=%s " % local_build_mpi_parts
+configopts += " -DDOWNLOAD_MINICONDA=FALSE -DTRUST_SYSTEM_LIBS=TRUE "
+configopts += " -DCUDA=%s " % local_build_cuda_parts
+configopts += " -DNCCL=%s " % local_build_cuda_nccl
+configopts += " -DBLA_VENDOR=FlexiBLAS "
+configopts += " -DFORCE_EXTERNAL_LIBS='boost;fftw;netcdf;netcdf-fortran;pnetcdf' "
+configopts += " -DUSE_FFT=TRUE "
+buildopts = 'NVCC_GENCODE="-gencode=arch=compute_70,code=sm_70 \
+                           -gencode=arch=compute_75,code=sm_75 \
+                           -gencode=arch=compute_80,code=sm_80"'
+
+modextravars = {
+    'AMBERHOME': '%(installdir)s/',
+}
+modextrapaths = {'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages']}
+
+modluafooter = '''
+add_property("arch","gpu")
+'''
+
+group = "amber"
+
+modloadmsg = '''
+
+Info: (1) Check the loaded modules to see if loading the AMBER module
+succeeded. If it did, ignore the rest of this message. (2) If AMBER
+didn't load, one possible reason is that "amber" is not currently
+your primary group. You can temporarily change your primary group by
+typing "newgrp amber". (3) If that didn't work, you are probably
+not a member of the group "amber", you have to first add yourself
+to that group. Visit "https://judoor.fz-juelich.de/", follow the
+link "Request access to restricted software", enable "amber" for
+your account, wait 15-20 minutes and then try "newgrp amber" again.
+
+'''
+
+moduleclass = 'bio'
diff --git a/Golden_Repo/a/AMBER/AMBER-20-gpsmkl-2022a.eb b/Golden_Repo/a/AMBER/AMBER-20-gpsmkl-2022a.eb
new file mode 100644
index 0000000000000000000000000000000000000000..69a30d503da9198842da9f6dc142c9e73f07ca69
--- /dev/null
+++ b/Golden_Repo/a/AMBER/AMBER-20-gpsmkl-2022a.eb
@@ -0,0 +1,122 @@
+easyblock = 'CMakeMake'
+
+name = 'AMBER'
+version = '20'
+versionsuffix = '-AmberTools-21-plumed'
+
+homepage = 'http://ambermd.org'
+description = """
+AMBER: 'Assisted Model Building with Energy Refinement' is a set of molecular
+mechanics force fields and a package of molecular simulation programs.
+
+Citation:
+D.A. Case, K. Belfon, I.Y. Ben-Shalom, S.R. Brozell, D.S. Cerutti,
+T.E. Cheatham, III, V.W.D. Cruzeiro, T.A. Darden, R.E. Duke, G. Giambasu,
+M.K. Gilson, H. Gohlke, A.W. Goetz, R. Harris, S. Izadi, S.A. Izmailov,
+K. Kasavajhala, A. Kovalenko, R. Krasny, T. Kurtzman, T.S. Lee, S. LeGrand,
+P. Li, C. Lin, J. Liu, T. Luchko, R. Luo, V. Man, K.M. Merz, Y. Miao,
+O. Mikhailovskii, G. Monard, H. Nguyen, A. Onufriev, F.Pan, S. Pantano,
+R. Qi, D.R. Roe, A. Roitberg, C. Sagui, S. Schott-Verdugo, J. Shen,
+C. Simmerling, N.R.Skrynnikov, J. Smith, J. Swails, R.C. Walker, J. Wang,
+L. Wilson, R.M. Wolf, X. Wu, Y. Xiong, Y. Xue, D.M. York
+and P.A. Kollman (2020),
+AMBER 2020, University of California, San Francisco.
+"""
+
+toolchain = {'name': 'gpsmkl', 'version': '2022a'}
+toolchainopts = {'pic': True}
+toolchainopts = {'openmp': True, 'usempi': True}
+
+builddependencies = [
+    ('CMake', '3.23.1'),
+    ('binutils', '2.38'),
+]
+dependencies = [
+    #    ('FFTW.MPI', '3.3.10'),
+    ('Boost', '1.79.0'),
+    ('flex', '2.6.4'),
+    ('NCCL', 'default', '-CUDA-11.7'),
+    ('netCDF', '4.9.0'),
+    ('netCDF-Fortran', '4.6.0'),
+    ('PnetCDF', '1.12.3'),
+    ('Python', '3.10.4'),
+    ('matplotlib', '3.5.2', '', ('gcccoremkl', '11.3.0-2022.1.0')),
+    #    ('mpi4py', '3.1.4', '', ('gompi', '2022a'))
+    ('PLUMED', '2.8.1'),
+]
+
+sources = [
+    'AmberTools21.tar.bz2',
+    'Amber20.tar.bz2',
+]
+patches = [
+    'fix_nmrat_error.patch',
+    'adapt_to_python_3_10_api_changes.patch',
+    'AmberTools-21_CMake-FlexiBLAS.patch',
+    'AmberTools-21_fix_more_blas_argument_problems.patch',
+    'AmberTools-21_fix_rism_argument_mismatch.patch',
+    'AmberTools-21_fix_xray_fftpack_arg_mismatch.patch',
+    'Fix_FFTW_find_error_due_to_MPI_components.patch',
+    'Fix_netcdf_find_error_due_to_missed_F77_F90_interfaces.patch',
+]
+
+checksums = [
+    'f55fa930598d5a8e9749e8a22d1f25cab7fcf911d98570e35365dd7f262aaafd',
+    'a4c53639441c8cc85adee397933d07856cc4a723c82c6bea585cd76c197ead75',
+    '00394f987105f047cbacf5f002170a11720f0decbd399a59db6b3b6c8e950677',
+    'f5e7ff2fb5e782f5b64a70e750d1ccc6566fd600663dd339f1769ceca60f64d6',
+    '9543812c24c4b7842f64f1f8abaf2c92b5c4c0fadcdbd9811e76b81a778f0d36',
+    'c6279b57752239184b942d37f760749494ae0eff95236f3368c76ac0d2726a7c',
+    '14255e5739cec39303df570f06820c7532f7395e1b73b1e4104377984e2c9fc1',
+    '99c954e693659efc2a1d121f91510f56408006f0751d91595f45a34b03364e2f',
+    '468acfd764e8e3787f8f855e724a16ae11e92d36576994297eec26e6e0b41dd0',
+    '4f409c139ff49f61b1f617a34202b61223c2d8ae474ac9de62313aaad2284afd',
+]
+
+separate_build_dir = True
+local_build_mpi_parts = "TRUE"
+local_build_cuda_parts = "TRUE"
+local_build_cuda_nccl = "TRUE"
+
+preconfigopts = "CC=gcc && CXX=g++ && COMPILER=GNU "
+preconfigopts += " && cd %(builddir)s/amber20_src && "
+preconfigopts += " ./update_amber --update && cd ../easybuild_obj && "
+
+configopts = "-DCOMPILER=GNU -DCHECK_UPDATES=OFF -DAPPLY_UPDATES=OFF -DBUILD_GUI=FALSE "
+configopts += " -DINSTALL_TESTS=TRUE -DOPENMP=TRUE -DMPI=%s " % local_build_mpi_parts
+configopts += " -DDOWNLOAD_MINICONDA=FALSE -DTRUST_SYSTEM_LIBS=TRUE "
+configopts += " -DCUDA=%s " % local_build_cuda_parts
+configopts += " -DNCCL=%s " % local_build_cuda_nccl
+configopts += " -DBLA_VENDOR=FlexiBLAS "
+configopts += " -DFORCE_EXTERNAL_LIBS='boost;netcdf;netcdf-fortran;pnetcdf' "
+configopts += " -DUSE_FFT=TRUE "
+buildopts = 'NVCC_GENCODE="-gencode=arch=compute_70,code=sm_70 \
+                           -gencode=arch=compute_75,code=sm_75 \
+                           -gencode=arch=compute_80,code=sm_80"'
+
+modextravars = {
+    'AMBERHOME': '%(installdir)s/',
+}
+modextrapaths = {'PYTHONPATH': ['lib/python%(pyshortver)s/site-packages']}
+
+modluafooter = '''
+add_property("arch","gpu")
+'''
+
+group = "amber"
+
+modloadmsg = '''
+
+Info: (1) Check the loaded modules to see if loading the AMBER module
+succeeded. If it did, ignore the rest of this message. (2) If AMBER
+didn't load, one possible reason is that "amber" is not currently
+your primary group. You can temporarily change your primary group by
+typing "newgrp amber". (3) If that didn't work, you are probably
+not a member of the group "amber", you have to first add yourself
+to that group. Visit "https://judoor.fz-juelich.de/", follow the
+link "Request access to restricted software", enable "amber" for
+your account, wait 15-20 minutes and then try "newgrp amber" again.
+
+'''
+
+moduleclass = 'bio'
diff --git a/Golden_Repo/a/AMBER/Fix_FFTW_find_error_due_to_MPI_components.patch b/Golden_Repo/a/AMBER/Fix_FFTW_find_error_due_to_MPI_components.patch
new file mode 100644
index 0000000000000000000000000000000000000000..7a0851792102771354c98ed172ae8d03d4734964
--- /dev/null
+++ b/Golden_Repo/a/AMBER/Fix_FFTW_find_error_due_to_MPI_components.patch
@@ -0,0 +1,40 @@
+diff -ruN A20_src/AmberTools/src/quick/cmake/jedbrown/FindFFTW.cmake A20_src1/AmberTools/src/quick/cmake/jedbrown/FindFFTW.cmake
+Fix MPI related errors in CMake FindFFTW modules
+author: Sandipan Mohanty (Juelich Supercomputing Centre)
+--- A20_src/AmberTools/src/quick/cmake/jedbrown/FindFFTW.cmake	2023-01-28 14:19:26.575506981 +0100
++++ A20_src1/AmberTools/src/quick/cmake/jedbrown/FindFFTW.cmake	2023-01-28 14:05:09.172659586 +0100
+@@ -242,7 +242,7 @@
+ 
+ 	set(CMAKE_REQUIRED_LIBRARIES ${FFTW_LIBRARY_MPI})
+ 	if(EXISTS "${FFTW_LIBRARY_MPI}")
+-		fftw_check_c_function(fftw_mpi_init FFTW_MPI_WORKS)
++		fftw_check_c_function(fftw_mpi_init FFTW_MPI_WORKS ${FFTW_LIBRARY_MPI} ${FFTW_LIBRARY_SERIAL} ${MPI_C_LIBRARIES})
+ 	else()
+ 		set(FFTW_MPI_WORKS FALSE)
+ 	endif()
+@@ -365,4 +365,4 @@
+ endif()
+ 
+ # don't leak required libraries
+-set(CMAKE_REQUIRED_LIBRARIES "")
+\ No newline at end of file
++set(CMAKE_REQUIRED_LIBRARIES "")
+diff -ruN A20_src/cmake/jedbrown/FindFFTW.cmake A20_src1/cmake/jedbrown/FindFFTW.cmake
+--- A20_src/cmake/jedbrown/FindFFTW.cmake	2023-01-28 14:18:50.145392374 +0100
++++ A20_src1/cmake/jedbrown/FindFFTW.cmake	2023-01-28 14:03:56.662393042 +0100
+@@ -242,7 +242,7 @@
+ 
+ 	set(CMAKE_REQUIRED_LIBRARIES ${FFTW_LIBRARY_MPI})
+ 	if(EXISTS "${FFTW_LIBRARY_MPI}")
+-		fftw_check_c_function(fftw_mpi_init FFTW_MPI_WORKS)
++		fftw_check_c_function(fftw_mpi_init FFTW_MPI_WORKS ${FFTW_LIBRARY_MPI} ${FFTW_LIBRARY_SERIAL} ${MPI_C_LIBRARIES})
+ 	else()
+ 		set(FFTW_MPI_WORKS FALSE)
+ 	endif()
+@@ -365,4 +365,4 @@
+ endif()
+ 
+ # don't leak required libraries
+-set(CMAKE_REQUIRED_LIBRARIES "")
+\ No newline at end of file
++set(CMAKE_REQUIRED_LIBRARIES "")
diff --git a/Golden_Repo/a/AMBER/Fix_netcdf_find_error_due_to_missed_F77_F90_interfaces.patch b/Golden_Repo/a/AMBER/Fix_netcdf_find_error_due_to_missed_F77_F90_interfaces.patch
new file mode 100644
index 0000000000000000000000000000000000000000..7850e149d00dc1e31667c71147b7f6e2e24b37ee
--- /dev/null
+++ b/Golden_Repo/a/AMBER/Fix_netcdf_find_error_due_to_missed_F77_F90_interfaces.patch
@@ -0,0 +1,14 @@
+diff -ruN A20_src/cmake/jedbrown/FindNetCDF.cmake A20_src1/cmake/jedbrown/FindNetCDF.cmake
+Fix NetCDF find errors in CMake modules due to F77 and F90 interface detection errors
+author: Sandipan Mohanty (Juelich Supercomputing Centre)
+--- A20_src/cmake/jedbrown/FindNetCDF.cmake	2023-01-28 14:29:38.347400350 +0100
++++ A20_src1/cmake/jedbrown/FindNetCDF.cmake	2023-01-28 14:02:28.892122573 +0100
+@@ -51,7 +51,7 @@
+ get_filename_component(NetCDF_lib_dirs "${NetCDF_LIBRARIES_C}" PATH)
+ 
+ macro (NetCDF_check_interface lang header libs)
+-	find_path (NetCDF_INCLUDES_${lang} NAMES ${header} HINTS "${NetCDF_INCLUDES}" NO_DEFAULT_PATH)
++	find_path (NetCDF_INCLUDES_${lang} NAMES ${header})
+   
+ 	find_library (NetCDF_LIBRARIES_${lang} NAMES ${libs} HINTS "${NetCDF_lib_dirs}")
+ 
diff --git a/Golden_Repo/a/AMBER/adapt_to_python_3_10_api_changes.patch b/Golden_Repo/a/AMBER/adapt_to_python_3_10_api_changes.patch
new file mode 100644
index 0000000000000000000000000000000000000000..b0e2212a60d6245a8117cf53bdb86009ffcc9961
--- /dev/null
+++ b/Golden_Repo/a/AMBER/adapt_to_python_3_10_api_changes.patch
@@ -0,0 +1,3185 @@
+Numerous small changes required to adjust to Python 3.10 API changes
+author: Sandipan Mohanty (Juelich Supercomputing Centre)
+diff -ruN amber20_src/AmberTools/src/include/CompatibilityMacros.h amber20_src1/AmberTools/src/include/CompatibilityMacros.h
+--- amber20_src/AmberTools/src/include/CompatibilityMacros.h	2018-06-18 16:24:02.000000000 +0200
++++ amber20_src1/AmberTools/src/include/CompatibilityMacros.h	2023-01-22 14:58:23.467995866 +0100
+@@ -18,6 +18,35 @@
+ #   define PyInt_FromLong PyLong_FromLong
+ #   define PyInt_AsLong PyLong_AsLong
+ 
++#if PY_VERSION_HEX < 0x030900A4
++#  define Py_SET_REFCNT(obj, refcnt) ((Py_REFCNT(obj) = (refcnt)), (void)0)
++#endif
++#define Py_INCR_REFCNT(obj) (Py_SET_REFCNT(obj, Py_REFCNT(obj) + 1))
++#define Py_DECR_REFCNT(obj) (Py_SET_REFCNT(obj, Py_REFCNT(obj) - 1))
++
++#if PY_VERSION_HEX >= 0x030A00A1
++PyObject * _PyGen_Send(PyGenObject *gen, PyObject *arg) {
++    PyObject *result;
++    // PyIter_Send() asserts non-NULL arg
++    if (PyIter_Send((PyObject*)gen, arg ? arg : Py_None, &result) == PYGEN_RETURN) {
++        if (PyAsyncGen_CheckExact(gen)) {
++            assert(result == Py_None);
++            PyErr_SetNone(PyExc_StopAsyncIteration);
++        }
++        else if (result == Py_None) {
++            PyErr_SetNone(PyExc_StopIteration);
++        }
++        else {
++            _PyGen_SetStopIterationValue(result);
++        }
++        Py_CLEAR(result);
++    }
++    return result;
++}
++#endif
++
++
++
+ #else /* Python 2 */
+ 
+ #   define PyObject_IS_STRING PyString_Check
+diff -ruN amber20_src/AmberTools/src/mpi4py-3.0.3/CMakeLists.txt amber20_src1/AmberTools/src/mpi4py-3.0.3/CMakeLists.txt
+--- amber20_src/AmberTools/src/mpi4py-3.0.3/CMakeLists.txt	2021-04-25 02:51:38.000000000 +0200
++++ amber20_src1/AmberTools/src/mpi4py-3.0.3/CMakeLists.txt	2023-01-22 14:19:04.933478114 +0100
+@@ -34,6 +34,8 @@
+ 	endif()
+ endif()
+ 
++set(MPI4PY_INCDIRS "${MPI4PY_INCDIRS}${LIST_SEP}${AMBERTOOLS_INC_DIR}")
++
+ set(MPI4PY_LIBS_LIST "")
+ set(MPI4PY_LIBDIR_LIST "")
+ 
+diff -ruN amber20_src/AmberTools/src/mpi4py-3.0.3/src/mpi4py.MPI.c amber20_src1/AmberTools/src/mpi4py-3.0.3/src/mpi4py.MPI.c
+--- amber20_src/AmberTools/src/mpi4py-3.0.3/src/mpi4py.MPI.c	2021-04-25 02:51:38.000000000 +0200
++++ amber20_src1/AmberTools/src/mpi4py-3.0.3/src/mpi4py.MPI.c	2023-01-22 15:05:14.380522648 +0100
+@@ -2,6 +2,8 @@
+ 
+ #define PY_SSIZE_T_CLEAN
+ #include "Python.h"
++#include "CompatibilityMacros.h"
++
+ #ifndef Py_PYTHON_H
+     #error Python headers needed to compile C extensions, please install development version of Python.
+ #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
+@@ -154207,9 +154209,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6mpi4py_3MPI_8Datatype_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   (*Py_TYPE(o)->tp_free)(o);
+@@ -154497,9 +154499,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6mpi4py_3MPI_7Request_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->ob_buf);
+@@ -154877,9 +154879,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6mpi4py_3MPI_7Message_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->ob_buf);
+@@ -155073,9 +155075,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6mpi4py_3MPI_2Op_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   (*Py_TYPE(o)->tp_free)(o);
+@@ -155260,9 +155262,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6mpi4py_3MPI_5Group_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   (*Py_TYPE(o)->tp_free)(o);
+@@ -155456,9 +155458,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6mpi4py_3MPI_4Info_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   (*Py_TYPE(o)->tp_free)(o);
+@@ -155675,9 +155677,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6mpi4py_3MPI_10Errhandler_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   (*Py_TYPE(o)->tp_free)(o);
+@@ -155845,9 +155847,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6mpi4py_3MPI_4Comm_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   (*Py_TYPE(o)->tp_free)(o);
+@@ -156860,9 +156862,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6mpi4py_3MPI_3Win_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->ob_mem);
+@@ -157166,9 +157168,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6mpi4py_3MPI_4File_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   (*Py_TYPE(o)->tp_free)(o);
+@@ -157436,9 +157438,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6mpi4py_3MPI_6memory_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   (*Py_TYPE(o)->tp_free)(o);
+@@ -157609,9 +157611,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6mpi4py_3MPI_6_p_mem_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   (*Py_TYPE(o)->tp_free)(o);
+diff -ruN amber20_src/AmberTools/src/pymdgx/mdgx/mdgx.c amber20_src1/AmberTools/src/pymdgx/mdgx/mdgx.c
+--- amber20_src/AmberTools/src/pymdgx/mdgx/mdgx.c	2019-08-01 14:29:41.000000000 +0200
++++ amber20_src1/AmberTools/src/pymdgx/mdgx/mdgx.c	2023-01-22 15:06:10.320862855 +0100
+@@ -36,6 +36,8 @@
+ 
+ #define PY_SSIZE_T_CLEAN
+ #include "Python.h"
++#include "CompatibilityMacros.h"
++
+ #ifndef Py_PYTHON_H
+     #error Python headers needed to compile C extensions, please install development version of Python.
+ #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03020000)
+@@ -15988,9 +15990,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_array___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->mode);
+@@ -16272,9 +16274,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_memoryview___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->obj);
+@@ -16509,9 +16511,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_memoryviewslice___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->from_object);
+diff -ruN amber20_src/AmberTools/src/pytraj/CMakeLists.txt amber20_src1/AmberTools/src/pytraj/CMakeLists.txt
+--- amber20_src/AmberTools/src/pytraj/CMakeLists.txt	2021-04-27 22:14:35.000000000 +0200
++++ amber20_src1/AmberTools/src/pytraj/CMakeLists.txt	2023-01-27 17:46:44.743410915 +0100
+@@ -40,8 +40,8 @@
+ add_custom_command(OUTPUT ${STAMP_FILE}
+ 	COMMAND ${CMAKE_COMMAND} -E env --unset=AMBERHOME 
+ 		CPPTRAJ_HEADERDIR=${CMAKE_CURRENT_SOURCE_DIR}/../cpptraj/src CPPTRAJ_LIBDIR=$<TARGET_FILE_DIR:${CPPTRAJ_TARGET}>
+-		CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} ${RPATH_ARG}
+-		${PYTHON_EXECUTABLE} setup.py build -b ${BUILD_DIR} ${OPENMP_ARG} ${PYTHON_COMPILER_ARG} ${WIN64_DEFINE_ARG}
++		AMBERTOOLS_INC=${AMBERTOOLS_INC_DIR} CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} ${RPATH_ARG}
++		${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/setup.py build -b ${BUILD_DIR} ${OPENMP_ARG} ${PYTHON_COMPILER_ARG} ${WIN64_DEFINE_ARG}
+ 	COMMAND ${CMAKE_COMMAND} -E touch ${STAMP_FILE}
+ 	WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+ 	DEPENDS ${PYTHON_SOURCES} ${CPPTRAJ_TARGET}
+@@ -61,13 +61,15 @@
+ 	include(${LIBDIR_FILE})
+ 	${FIX_BACKSLASHES_CMD}
+ 	execute_process(
+-    COMMAND \"${CMAKE_COMMAND}\" -E env  --unset=AMBERHOME
+-    \"CPPTRAJ_HEADERDIR=${CMAKE_CURRENT_SOURCE_DIR}/../cpptraj/src\" \"CPPTRAJ_LIBDIR=\${CPPTRAJ_LIBDIR}\"
+-    \"CXX=${CMAKE_CXX_COMPILER}\"
+-    \"CC=${CMAKE_C_COMPILER}\"
+-    ${RPATH_ARG}
+-    ${PYTHONPATH_SET_CMD}
+-	${PYTHON_EXECUTABLE} ./setup.py build -b ${BUILD_DIR} ${OPENMP_ARG} ${PYTHON_COMPILER_ARG} ${WIN64_DEFINE_ARG} install ${PYTHON_PREFIX_ARG}
+-    WORKING_DIRECTORY \"${CMAKE_CURRENT_SOURCE_DIR}\")")
++		COMMAND \"${CMAKE_COMMAND}\" -E env  --unset=AMBERHOME
++		\"CPPTRAJ_HEADERDIR=${CMAKE_CURRENT_SOURCE_DIR}/../cpptraj/src\"
++		\"CPPTRAJ_LIBDIR=\${CPPTRAJ_LIBDIR}\"
++		\"AMBERTOOLS_INC=${AMBERTOOLS_INC_DIR}\"
++		\"CXX=${CMAKE_CXX_COMPILER}\" \"CC=${CMAKE_C_COMPILER}\"
++		${PYTHONPATH_SET_CMD}
++		${PYTHON_EXECUTABLE} ./setup.py build -b \"${BUILD_DIR}\" ${OPENMP_ARG} ${PYTHON_COMPILER_ARG} ${WIN64_DEFINE_ARG} install ${PYTHON_PREFIX_ARG}
++		WORKING_DIRECTORY \"${CMAKE_CURRENT_SOURCE_DIR}\"
++	)
++")
+ 
+ add_subdirectory(tests)
+diff -ruN amber20_src/AmberTools/src/pytraj/pytraj/analysis/c_action/actionlist.cpp amber20_src1/AmberTools/src/pytraj/pytraj/analysis/c_action/actionlist.cpp
+--- amber20_src/AmberTools/src/pytraj/pytraj/analysis/c_action/actionlist.cpp	2021-04-28 14:29:50.000000000 +0200
++++ amber20_src1/AmberTools/src/pytraj/pytraj/analysis/c_action/actionlist.cpp	2023-01-22 15:10:34.252460710 +0100
+@@ -16,6 +16,8 @@
+ 
+ #define PY_SSIZE_T_CLEAN
+ #include "Python.h"
++#include "CompatibilityMacros.h"
++
+ #ifndef Py_PYTHON_H
+     #error Python headers needed to compile C extensions, please install development version of Python.
+ #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
+@@ -22473,9 +22475,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_10actionlist_10ActionList_5__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->top);
+@@ -23079,9 +23081,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_array___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->mode);
+@@ -23390,9 +23392,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_memoryview___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->obj);
+@@ -23640,9 +23642,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_memoryviewslice___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->from_object);
+diff -ruN amber20_src/AmberTools/src/pytraj/pytraj/analysis/c_action/c_action.cpp amber20_src1/AmberTools/src/pytraj/pytraj/analysis/c_action/c_action.cpp
+--- amber20_src/AmberTools/src/pytraj/pytraj/analysis/c_action/c_action.cpp	2021-04-28 14:29:52.000000000 +0200
++++ amber20_src1/AmberTools/src/pytraj/pytraj/analysis/c_action/c_action.cpp	2023-01-22 15:10:14.452341138 +0100
+@@ -16,6 +16,8 @@
+ 
+ #define PY_SSIZE_T_CLEAN
+ #include "Python.h"
++#include "CompatibilityMacros.h"
++
+ #ifndef Py_PYTHON_H
+     #error Python headers needed to compile C extensions, please install development version of Python.
+ #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
+@@ -47313,9 +47315,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_6Action_5__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->top);
+@@ -47524,9 +47526,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_12Action_Align_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -47645,9 +47647,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_12Action_Angle_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -47766,9 +47768,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_17Action_AreaPerMol_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -47887,9 +47889,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_14Action_AtomMap_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -48008,9 +48010,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_17Action_AtomicCorr_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -48129,9 +48131,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_18Action_AtomicFluct_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -48250,9 +48252,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_16Action_AutoImage_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -48371,9 +48373,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_14Action_Average_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -48492,9 +48494,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_13Action_Bounds_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -48613,9 +48615,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_10Action_Box_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -48734,9 +48736,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_13Action_Center_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -48855,9 +48857,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_14Action_Channel_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -48976,9 +48978,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_21Action_CheckChirality_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -49097,9 +49099,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_21Action_CheckStructure_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -49218,9 +49220,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_14Action_Closest_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -49339,9 +49341,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_22Action_ClusterDihedral_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -49460,9 +49462,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_15Action_Contacts_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -49581,9 +49583,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_16Action_CreateCrd_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -49702,9 +49704,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_20Action_DNAionTracker_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -49823,9 +49825,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_11Action_DSSP_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -49944,9 +49946,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_14Action_Density_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -50065,9 +50067,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_16Action_Diffusion_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -50186,9 +50188,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_15Action_Dihedral_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -50307,9 +50309,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_13Action_Dipole_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -50428,9 +50430,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_15Action_DistRmsd_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -50549,9 +50551,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_15Action_Distance_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -50670,9 +50672,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_13Action_Energy_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -50791,9 +50793,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_14Action_Esander_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -50912,9 +50914,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_19Action_FilterByData_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -51033,9 +51035,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_19Action_FixAtomOrder_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -51154,9 +51156,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_21Action_FixImagedBonds_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -51275,9 +51277,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_11Action_GIST_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -51396,9 +51398,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_11Action_Grid_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -51517,9 +51519,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_21Action_GridFreeEnergy_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -51638,9 +51640,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_19Action_HydrogenBond_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -51759,9 +51761,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_12Action_Image_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -51880,9 +51882,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_16Action_Jcoupling_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -52001,9 +52003,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_15Action_LESsplit_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -52122,9 +52124,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_10Action_LIE_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -52243,9 +52245,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_17Action_LipidOrder_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -52364,9 +52366,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_20Action_MakeStructure_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -52485,9 +52487,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_11Action_Mask_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -52606,9 +52608,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_13Action_Matrix_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -52727,9 +52729,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_15Action_MinImage_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -52848,9 +52850,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_14Action_Molsurf_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -52969,9 +52971,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_20Action_MultiDihedral_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -53090,9 +53092,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_18Action_MultiVector_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -53211,9 +53213,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_15Action_NAstruct_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -53332,9 +53334,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_13Action_NMRrst_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -53453,9 +53455,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_21Action_NativeContacts_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -53574,9 +53576,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_21Action_OrderParameter_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -53695,9 +53697,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_14Action_Outtraj_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -53816,9 +53818,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_15Action_PairDist_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -53937,9 +53939,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_15Action_Pairwise_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -54058,9 +54060,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_16Action_Principal_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -54179,9 +54181,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_17Action_Projection_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -54300,9 +54302,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_13Action_Pucker_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -54421,9 +54423,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_13Action_Radgyr_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -54542,9 +54544,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_13Action_Radial_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -54663,9 +54665,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_20Action_RandomizeIons_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -54784,9 +54786,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_12Action_Remap_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -54905,9 +54907,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_20Action_ReplicateCell_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -55026,9 +55028,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_11Action_Rmsd_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -55147,9 +55149,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_13Action_Rotate_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -55268,9 +55270,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_17Action_RunningAvg_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -55389,9 +55391,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_21Action_STFC_Diffusion_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -55510,9 +55512,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_12Action_Scale_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -55631,9 +55633,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_18Action_SetVelocity_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -55752,9 +55754,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_11Action_Spam_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -55873,9 +55875,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_12Action_Strip_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -55994,9 +55996,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_11Action_Surf_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -56115,9 +56117,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_20Action_SymmetricRmsd_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -56236,9 +56238,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_18Action_Temperature_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -56357,9 +56359,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_16Action_Translate_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -56478,9 +56480,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_14Action_Unstrip_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -56599,9 +56601,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_13Action_Unwrap_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -56720,9 +56722,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_13Action_Vector_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -56841,9 +56843,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_23Action_VelocityAutoCorr_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -56962,9 +56964,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_13Action_Volmap_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -57083,9 +57085,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_13Action_Volume_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -57204,9 +57206,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_17Action_Watershell_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -57325,9 +57327,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_8c_action_8c_action_15Action_XtalSymm_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -57686,9 +57688,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_array___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->mode);
+@@ -57997,9 +57999,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_memoryview___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->obj);
+@@ -58247,9 +58249,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_memoryviewslice___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->from_object);
+diff -ruN amber20_src/AmberTools/src/pytraj/pytraj/analysis/c_analysis/c_analysis.cpp amber20_src1/AmberTools/src/pytraj/pytraj/analysis/c_analysis/c_analysis.cpp
+--- amber20_src/AmberTools/src/pytraj/pytraj/analysis/c_analysis/c_analysis.cpp	2021-04-28 14:29:54.000000000 +0200
++++ amber20_src1/AmberTools/src/pytraj/pytraj/analysis/c_analysis/c_analysis.cpp	2023-01-22 15:09:38.252122446 +0100
+@@ -16,6 +16,8 @@
+ 
+ #define PY_SSIZE_T_CLEAN
+ #include "Python.h"
++#include "CompatibilityMacros.h"
++
+ #ifndef Py_PYTHON_H
+     #error Python headers needed to compile C extensions, please install development version of Python.
+ #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
+@@ -28870,9 +28872,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_10c_analysis_10c_analysis_8Analysis_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   (*Py_TYPE(o)->tp_free)(o);
+@@ -28975,9 +28977,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_10c_analysis_10c_analysis_16Analysis_AmdBias_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   __pyx_tp_dealloc_6pytraj_8analysis_10c_analysis_10c_analysis_Analysis(o);
+@@ -29082,9 +29084,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_10c_analysis_10c_analysis_17Analysis_AutoCorr_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   __pyx_tp_dealloc_6pytraj_8analysis_10c_analysis_10c_analysis_Analysis(o);
+@@ -29189,9 +29191,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_10c_analysis_10c_analysis_16Analysis_Average_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   __pyx_tp_dealloc_6pytraj_8analysis_10c_analysis_10c_analysis_Analysis(o);
+@@ -29296,9 +29298,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_10c_analysis_10c_analysis_19Analysis_Clustering_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   __pyx_tp_dealloc_6pytraj_8analysis_10c_analysis_10c_analysis_Analysis(o);
+@@ -29403,9 +29405,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_10c_analysis_10c_analysis_13Analysis_Corr_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   __pyx_tp_dealloc_6pytraj_8analysis_10c_analysis_10c_analysis_Analysis(o);
+@@ -29510,9 +29512,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_10c_analysis_10c_analysis_19Analysis_CrankShaft_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   __pyx_tp_dealloc_6pytraj_8analysis_10c_analysis_10c_analysis_Analysis(o);
+@@ -29617,9 +29619,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_10c_analysis_10c_analysis_17Analysis_CrdFluct_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   __pyx_tp_dealloc_6pytraj_8analysis_10c_analysis_10c_analysis_Analysis(o);
+@@ -29724,9 +29726,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_10c_analysis_10c_analysis_18Analysis_CrossCorr_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   __pyx_tp_dealloc_6pytraj_8analysis_10c_analysis_10c_analysis_Analysis(o);
+@@ -29831,9 +29833,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_10c_analysis_10c_analysis_19Analysis_Divergence_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   __pyx_tp_dealloc_6pytraj_8analysis_10c_analysis_10c_analysis_Analysis(o);
+@@ -29938,9 +29940,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_10c_analysis_10c_analysis_12Analysis_FFT_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   __pyx_tp_dealloc_6pytraj_8analysis_10c_analysis_10c_analysis_Analysis(o);
+@@ -30045,9 +30047,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_10c_analysis_10c_analysis_13Analysis_Hist_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   __pyx_tp_dealloc_6pytraj_8analysis_10c_analysis_10c_analysis_Analysis(o);
+@@ -30152,9 +30154,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_10c_analysis_10c_analysis_13Analysis_IRED_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   __pyx_tp_dealloc_6pytraj_8analysis_10c_analysis_10c_analysis_Analysis(o);
+@@ -30259,9 +30261,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_10c_analysis_10c_analysis_18Analysis_Integrate_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   __pyx_tp_dealloc_6pytraj_8analysis_10c_analysis_10c_analysis_Analysis(o);
+@@ -30366,9 +30368,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_10c_analysis_10c_analysis_12Analysis_KDE_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   __pyx_tp_dealloc_6pytraj_8analysis_10c_analysis_10c_analysis_Analysis(o);
+@@ -30473,9 +30475,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_10c_analysis_10c_analysis_17Analysis_Lifetime_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   __pyx_tp_dealloc_6pytraj_8analysis_10c_analysis_10c_analysis_Analysis(o);
+@@ -30580,9 +30582,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_10c_analysis_10c_analysis_15Analysis_Matrix_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   __pyx_tp_dealloc_6pytraj_8analysis_10c_analysis_10c_analysis_Analysis(o);
+@@ -30687,9 +30689,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_10c_analysis_10c_analysis_18Analysis_MeltCurve_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   __pyx_tp_dealloc_6pytraj_8analysis_10c_analysis_10c_analysis_Analysis(o);
+@@ -30794,9 +30796,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_10c_analysis_10c_analysis_14Analysis_Modes_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   __pyx_tp_dealloc_6pytraj_8analysis_10c_analysis_10c_analysis_Analysis(o);
+@@ -30901,9 +30903,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_10c_analysis_10c_analysis_18Analysis_MultiHist_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   __pyx_tp_dealloc_6pytraj_8analysis_10c_analysis_10c_analysis_Analysis(o);
+@@ -31008,9 +31010,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_10c_analysis_10c_analysis_16Analysis_Overlap_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   __pyx_tp_dealloc_6pytraj_8analysis_10c_analysis_10c_analysis_Analysis(o);
+@@ -31115,9 +31117,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_10c_analysis_10c_analysis_19Analysis_Regression_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   __pyx_tp_dealloc_6pytraj_8analysis_10c_analysis_10c_analysis_Analysis(o);
+@@ -31222,9 +31224,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_10c_analysis_10c_analysis_15Analysis_RemLog_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   __pyx_tp_dealloc_6pytraj_8analysis_10c_analysis_10c_analysis_Analysis(o);
+@@ -31329,9 +31331,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_10c_analysis_10c_analysis_14Analysis_Rms2d_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   __pyx_tp_dealloc_6pytraj_8analysis_10c_analysis_10c_analysis_Analysis(o);
+@@ -31436,9 +31438,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_10c_analysis_10c_analysis_19Analysis_RmsAvgCorr_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   __pyx_tp_dealloc_6pytraj_8analysis_10c_analysis_10c_analysis_Analysis(o);
+@@ -31543,9 +31545,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_10c_analysis_10c_analysis_19Analysis_RunningAvg_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   __pyx_tp_dealloc_6pytraj_8analysis_10c_analysis_10c_analysis_Analysis(o);
+@@ -31650,9 +31652,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_10c_analysis_10c_analysis_15Analysis_Spline_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   __pyx_tp_dealloc_6pytraj_8analysis_10c_analysis_10c_analysis_Analysis(o);
+@@ -31757,9 +31759,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_10c_analysis_10c_analysis_19Analysis_Statistics_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   __pyx_tp_dealloc_6pytraj_8analysis_10c_analysis_10c_analysis_Analysis(o);
+@@ -31864,9 +31866,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_10c_analysis_10c_analysis_17Analysis_Timecorr_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   __pyx_tp_dealloc_6pytraj_8analysis_10c_analysis_10c_analysis_Analysis(o);
+@@ -31971,9 +31973,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_10c_analysis_10c_analysis_19Analysis_VectorMath_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   __pyx_tp_dealloc_6pytraj_8analysis_10c_analysis_10c_analysis_Analysis(o);
+@@ -32078,9 +32080,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_10c_analysis_10c_analysis_15Analysis_Rotdif_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   __pyx_tp_dealloc_6pytraj_8analysis_10c_analysis_10c_analysis_Analysis(o);
+@@ -32185,9 +32187,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_10c_analysis_10c_analysis_20Analysis_LowestCurve_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   __pyx_tp_dealloc_6pytraj_8analysis_10c_analysis_10c_analysis_Analysis(o);
+@@ -32292,9 +32294,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_10c_analysis_10c_analysis_15Analysis_PhiPsi_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   __pyx_tp_dealloc_6pytraj_8analysis_10c_analysis_10c_analysis_Analysis(o);
+@@ -32399,9 +32401,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_10c_analysis_10c_analysis_11Analysis_TI_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   __pyx_tp_dealloc_6pytraj_8analysis_10c_analysis_10c_analysis_Analysis(o);
+@@ -32506,9 +32508,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_10c_analysis_10c_analysis_16Analysis_Wavelet_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   __pyx_tp_dealloc_6pytraj_8analysis_10c_analysis_10c_analysis_Analysis(o);
+@@ -32613,9 +32615,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_10c_analysis_10c_analysis_17Analysis_CurveFit_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   __pyx_tp_dealloc_6pytraj_8analysis_10c_analysis_10c_analysis_Analysis(o);
+@@ -32720,9 +32722,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_10c_analysis_10c_analysis_19Analysis_Multicurve_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   __pyx_tp_dealloc_6pytraj_8analysis_10c_analysis_10c_analysis_Analysis(o);
+@@ -32827,9 +32829,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_10c_analysis_10c_analysis_14Analysis_State_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   __pyx_tp_dealloc_6pytraj_8analysis_10c_analysis_10c_analysis_Analysis(o);
+@@ -32934,9 +32936,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8analysis_10c_analysis_10c_analysis_18Analysis_Hausdorff_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   __pyx_tp_dealloc_6pytraj_8analysis_10c_analysis_10c_analysis_Analysis(o);
+@@ -33053,9 +33055,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_array___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->mode);
+@@ -33364,9 +33366,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_memoryview___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->obj);
+@@ -33614,9 +33616,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_memoryviewslice___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->from_object);
+diff -ruN amber20_src/AmberTools/src/pytraj/pytraj/core/box.cpp amber20_src1/AmberTools/src/pytraj/pytraj/core/box.cpp
+--- amber20_src/AmberTools/src/pytraj/pytraj/core/box.cpp	2021-04-28 14:29:55.000000000 +0200
++++ amber20_src1/AmberTools/src/pytraj/pytraj/core/box.cpp	2023-01-22 15:07:38.721399246 +0100
+@@ -16,6 +16,8 @@
+ 
+ #define PY_SSIZE_T_CLEAN
+ #include "Python.h"
++#include "CompatibilityMacros.h"
++
+ #ifndef Py_PYTHON_H
+     #error Python headers needed to compile C extensions, please install development version of Python.
+ #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
+@@ -17827,9 +17829,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_4core_3box_3Box_11__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   (*Py_TYPE(o)->tp_free)(o);
+@@ -18127,9 +18129,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_array___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->mode);
+@@ -18438,9 +18440,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_memoryview___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->obj);
+@@ -18688,9 +18690,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_memoryviewslice___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->from_object);
+diff -ruN amber20_src/AmberTools/src/pytraj/pytraj/core/c_core.cpp amber20_src1/AmberTools/src/pytraj/pytraj/core/c_core.cpp
+--- amber20_src/AmberTools/src/pytraj/pytraj/core/c_core.cpp	2021-04-28 14:29:56.000000000 +0200
++++ amber20_src1/AmberTools/src/pytraj/pytraj/core/c_core.cpp	2023-01-22 15:08:09.481585562 +0100
+@@ -16,6 +16,8 @@
+ 
+ #define PY_SSIZE_T_CLEAN
+ #include "Python.h"
++#include "CompatibilityMacros.h"
++
+ #ifndef Py_PYTHON_H
+     #error Python headers needed to compile C extensions, please install development version of Python.
+ #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
+@@ -25114,9 +25116,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_4core_6c_core_12CpptrajState_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->datafilelist);
+@@ -25552,9 +25554,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_4core_6c_core_8AtomMask_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   (*Py_TYPE(o)->tp_free)(o);
+@@ -25732,9 +25734,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_4core_6c_core_8FileName_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   (*Py_TYPE(o)->tp_free)(o);
+@@ -25848,9 +25850,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_4core_6c_core_8NameType_5__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   (*Py_TYPE(o)->tp_free)(o);
+@@ -25993,9 +25995,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_4core_6c_core_7ArgList_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   (*Py_TYPE(o)->tp_free)(o);
+@@ -26120,9 +26122,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_4core_6c_core_7Command_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   (*Py_TYPE(o)->tp_free)(o);
+@@ -26349,9 +26351,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_array___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->mode);
+@@ -26660,9 +26662,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_memoryview___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->obj);
+@@ -26910,9 +26912,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_memoryviewslice___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->from_object);
+diff -ruN amber20_src/AmberTools/src/pytraj/pytraj/core/c_dict.cpp amber20_src1/AmberTools/src/pytraj/pytraj/core/c_dict.cpp
+--- amber20_src/AmberTools/src/pytraj/pytraj/core/c_dict.cpp	2021-04-28 14:29:56.000000000 +0200
++++ amber20_src1/AmberTools/src/pytraj/pytraj/core/c_dict.cpp	2023-01-22 15:08:21.871660570 +0100
+@@ -16,6 +16,8 @@
+ 
+ #define PY_SSIZE_T_CLEAN
+ #include "Python.h"
++#include "CompatibilityMacros.h"
++
+ #ifndef Py_PYTHON_H
+     #error Python headers needed to compile C extensions, please install development version of Python.
+ #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
+diff -ruN amber20_src/AmberTools/src/pytraj/pytraj/core/coordinfo.cpp amber20_src1/AmberTools/src/pytraj/pytraj/core/coordinfo.cpp
+--- amber20_src/AmberTools/src/pytraj/pytraj/core/coordinfo.cpp	2021-04-28 14:29:56.000000000 +0200
++++ amber20_src1/AmberTools/src/pytraj/pytraj/core/coordinfo.cpp	2023-01-22 15:08:39.021764352 +0100
+@@ -16,6 +16,8 @@
+ 
+ #define PY_SSIZE_T_CLEAN
+ #include "Python.h"
++#include "CompatibilityMacros.h"
++
+ #ifndef Py_PYTHON_H
+     #error Python headers needed to compile C extensions, please install development version of Python.
+ #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
+@@ -1740,9 +1742,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_4core_9coordinfo_14CoordinateInfo_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   (*Py_TYPE(o)->tp_free)(o);
+diff -ruN amber20_src/AmberTools/src/pytraj/pytraj/core/parameter_types.cpp amber20_src1/AmberTools/src/pytraj/pytraj/core/parameter_types.cpp
+--- amber20_src/AmberTools/src/pytraj/pytraj/core/parameter_types.cpp	2021-04-28 14:29:57.000000000 +0200
++++ amber20_src1/AmberTools/src/pytraj/pytraj/core/parameter_types.cpp	2023-01-26 11:16:55.667802923 +0100
+@@ -16,6 +16,7 @@
+ 
+ #define PY_SSIZE_T_CLEAN
+ #include "Python.h"
++#include "CompatibilityMacros.h"
+ #ifndef Py_PYTHON_H
+     #error Python headers needed to compile C extensions, please install development version of Python.
+ #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
+@@ -5765,9 +5766,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_4core_15parameter_types_9AngleType_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   (*Py_TYPE(o)->tp_free)(o);
+@@ -5975,9 +5976,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_4core_15parameter_types_12LES_AtomType_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   (*Py_TYPE(o)->tp_free)(o);
+@@ -6097,9 +6098,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_4core_15parameter_types_13AngleParmType_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   (*Py_TYPE(o)->tp_free)(o);
+@@ -6663,9 +6664,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_4core_15parameter_types_12BondParmType_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   (*Py_TYPE(o)->tp_free)(o);
+@@ -6873,9 +6874,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_4core_15parameter_types_12DihedralType_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   (*Py_TYPE(o)->tp_free)(o);
+@@ -6999,9 +7000,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_4core_15parameter_types_8BondType_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   (*Py_TYPE(o)->tp_free)(o);
+@@ -7219,9 +7220,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_4core_15parameter_types_16DihedralParmType_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   (*Py_TYPE(o)->tp_free)(o);
+diff -ruN amber20_src/AmberTools/src/pytraj/pytraj/core/topology_objects.cpp amber20_src1/AmberTools/src/pytraj/pytraj/core/topology_objects.cpp
+--- amber20_src/AmberTools/src/pytraj/pytraj/core/topology_objects.cpp	2021-04-28 14:29:58.000000000 +0200
++++ amber20_src1/AmberTools/src/pytraj/pytraj/core/topology_objects.cpp	2023-01-22 15:08:59.421887745 +0100
+@@ -16,6 +16,8 @@
+ 
+ #define PY_SSIZE_T_CLEAN
+ #include "Python.h"
++#include "CompatibilityMacros.h"
++
+ #ifndef Py_PYTHON_H
+     #error Python headers needed to compile C extensions, please install development version of Python.
+ #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
+@@ -21208,9 +21210,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_4core_16topology_objects_4Atom_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->resname);
+@@ -21457,9 +21459,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_4core_16topology_objects_7Residue_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   (*Py_TYPE(o)->tp_free)(o);
+@@ -21621,9 +21623,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_4core_16topology_objects_8Molecule_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   (*Py_TYPE(o)->tp_free)(o);
+@@ -21747,9 +21749,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_array___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->mode);
+@@ -22058,9 +22060,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_memoryview___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->obj);
+@@ -22308,9 +22310,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_memoryviewslice___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->from_object);
+diff -ruN amber20_src/AmberTools/src/pytraj/pytraj/datafiles/datafiles.cpp amber20_src1/AmberTools/src/pytraj/pytraj/datafiles/datafiles.cpp
+--- amber20_src/AmberTools/src/pytraj/pytraj/datafiles/datafiles.cpp	2021-04-28 14:29:59.000000000 +0200
++++ amber20_src1/AmberTools/src/pytraj/pytraj/datafiles/datafiles.cpp	2023-01-22 15:13:47.303624059 +0100
+@@ -16,6 +16,8 @@
+ 
+ #define PY_SSIZE_T_CLEAN
+ #include "Python.h"
++#include "CompatibilityMacros.h"
++
+ #ifndef Py_PYTHON_H
+     #error Python headers needed to compile C extensions, please install development version of Python.
+ #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
+@@ -17156,9 +17158,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_9datafiles_9datafiles_8DataFile_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   (*Py_TYPE(o)->tp_free)(o);
+@@ -17264,9 +17266,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_9datafiles_9datafiles_12DataFileList_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   (*Py_TYPE(o)->tp_free)(o);
+@@ -17379,9 +17381,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_array___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->mode);
+@@ -17690,9 +17692,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_memoryview___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->obj);
+@@ -17940,9 +17942,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_memoryviewslice___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->from_object);
+diff -ruN amber20_src/AmberTools/src/pytraj/pytraj/datasets/cast_dataset.cpp amber20_src1/AmberTools/src/pytraj/pytraj/datasets/cast_dataset.cpp
+--- amber20_src/AmberTools/src/pytraj/pytraj/datasets/cast_dataset.cpp	2021-04-28 14:30:04.000000000 +0200
++++ amber20_src1/AmberTools/src/pytraj/pytraj/datasets/cast_dataset.cpp	2023-01-26 10:37:24.934860624 +0100
+@@ -16,6 +16,7 @@
+ 
+ #define PY_SSIZE_T_CLEAN
+ #include "Python.h"
++#include "CompatibilityMacros.h"
+ #ifndef Py_PYTHON_H
+     #error Python headers needed to compile C extensions, please install development version of Python.
+ #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
+@@ -19658,9 +19659,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_array___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->mode);
+@@ -19969,9 +19970,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_memoryview___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->obj);
+@@ -20219,9 +20220,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_memoryviewslice___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->from_object);
+diff -ruN amber20_src/AmberTools/src/pytraj/pytraj/datasets/c_datasetlist.cpp amber20_src1/AmberTools/src/pytraj/pytraj/datasets/c_datasetlist.cpp
+--- amber20_src/AmberTools/src/pytraj/pytraj/datasets/c_datasetlist.cpp	2021-04-28 14:30:01.000000000 +0200
++++ amber20_src1/AmberTools/src/pytraj/pytraj/datasets/c_datasetlist.cpp	2023-01-25 19:44:35.930918886 +0100
+@@ -16,6 +16,8 @@
+ 
+ #define PY_SSIZE_T_CLEAN
+ #include "Python.h"
++#include "CompatibilityMacros.h"
++
+ #ifndef Py_PYTHON_H
+     #error Python headers needed to compile C extensions, please install development version of Python.
+ #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
+@@ -25823,9 +25825,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8datasets_13c_datasetlist_11DatasetList_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->_parent_lists);
+@@ -26970,9 +26972,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_array___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->mode);
+@@ -27281,9 +27283,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_memoryview___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->obj);
+@@ -27531,9 +27533,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_memoryviewslice___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->from_object);
+diff -ruN amber20_src/AmberTools/src/pytraj/pytraj/datasets/c_datasets.cpp amber20_src1/AmberTools/src/pytraj/pytraj/datasets/c_datasets.cpp
+--- amber20_src/AmberTools/src/pytraj/pytraj/datasets/c_datasets.cpp	2021-04-28 14:30:03.000000000 +0200
++++ amber20_src1/AmberTools/src/pytraj/pytraj/datasets/c_datasets.cpp	2023-01-25 19:45:37.801188852 +0100
+@@ -16,6 +16,8 @@
+ 
+ #define PY_SSIZE_T_CLEAN
+ #include "Python.h"
++#include "CompatibilityMacros.h"
++
+ #ifndef Py_PYTHON_H
+     #error Python headers needed to compile C extensions, please install development version of Python.
+ #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
+@@ -44907,9 +44909,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8datasets_10c_datasets_7Dataset_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->_base);
+@@ -45198,9 +45200,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8datasets_10c_datasets_9Dataset1D_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -45343,9 +45345,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8datasets_10c_datasets_13DatasetDouble_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -45523,9 +45525,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8datasets_10c_datasets_12DatasetFloat_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -45703,9 +45705,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8datasets_10c_datasets_14DatasetInteger_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -45884,9 +45886,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8datasets_10c_datasets_13DatasetString_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -46064,9 +46066,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8datasets_10c_datasets_13DatasetVector_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -46236,9 +46238,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8datasets_10c_datasets_9Dataset2D_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -46378,9 +46380,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8datasets_10c_datasets_19DatasetMatrixDouble_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -46572,9 +46574,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8datasets_10c_datasets_18DatasetMatrixFloat_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -46728,9 +46730,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8datasets_10c_datasets_9Dataset3D_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -46844,9 +46846,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8datasets_10c_datasets_16DatasetGridFloat_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -47052,9 +47054,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8datasets_10c_datasets_17DatasetGridDouble_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -47260,9 +47262,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8datasets_10c_datasets_12DatasetModes_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -47610,9 +47612,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8datasets_10c_datasets_16DatasetMatrix3x3_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -47775,9 +47777,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8datasets_10c_datasets_11DatasetMesh_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -47923,9 +47925,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8datasets_10c_datasets_13DatasetCoords_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->_top);
+@@ -48134,9 +48136,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8datasets_10c_datasets_16DatasetCoordsCRD_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -48265,9 +48267,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8datasets_10c_datasets_16DatasetCoordsRef_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -48411,9 +48413,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8datasets_10c_datasets_15DatasetTopology_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   PyObject_GC_Track(o);
+@@ -49453,9 +49455,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_array___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->mode);
+@@ -49764,9 +49766,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_memoryview___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->obj);
+@@ -50014,9 +50016,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_memoryviewslice___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->from_object);
+diff -ruN amber20_src/AmberTools/src/pytraj/pytraj/math/cpp_math.cpp amber20_src1/AmberTools/src/pytraj/pytraj/math/cpp_math.cpp
+--- amber20_src/AmberTools/src/pytraj/pytraj/math/cpp_math.cpp	2021-04-28 14:30:06.000000000 +0200
++++ amber20_src1/AmberTools/src/pytraj/pytraj/math/cpp_math.cpp	2023-01-22 15:12:15.953074065 +0100
+@@ -16,6 +16,8 @@
+ 
+ #define PY_SSIZE_T_CLEAN
+ #include "Python.h"
++#include "CompatibilityMacros.h"
++
+ #ifndef Py_PYTHON_H
+     #error Python headers needed to compile C extensions, please install development version of Python.
+ #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
+@@ -27652,9 +27654,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_4math_8cpp_math_4Grid_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   (*Py_TYPE(o)->tp_free)(o);
+@@ -27829,9 +27831,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_4math_8cpp_math_10Matrix_3x3_16__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   (*Py_TYPE(o)->tp_free)(o);
+@@ -28096,9 +28098,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_4math_8cpp_math_4Vec3_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   (*Py_TYPE(o)->tp_free)(o);
+@@ -28680,9 +28682,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_array___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->mode);
+@@ -28991,9 +28993,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_memoryview___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->obj);
+@@ -29241,9 +29243,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_memoryviewslice___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->from_object);
+diff -ruN amber20_src/AmberTools/src/pytraj/pytraj/topology/topology.cpp amber20_src1/AmberTools/src/pytraj/pytraj/topology/topology.cpp
+--- amber20_src/AmberTools/src/pytraj/pytraj/topology/topology.cpp	2021-04-28 14:30:08.000000000 +0200
++++ amber20_src1/AmberTools/src/pytraj/pytraj/topology/topology.cpp	2023-01-25 19:46:48.531497479 +0100
+@@ -16,6 +16,8 @@
+ 
+ #define PY_SSIZE_T_CLEAN
+ #include "Python.h"
++#include "CompatibilityMacros.h"
++
+ #ifndef Py_PYTHON_H
+     #error Python headers needed to compile C extensions, please install development version of Python.
+ #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
+@@ -34817,9 +34819,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8topology_8topology_8Topology_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   (*Py_TYPE(o)->tp_free)(o);
+@@ -35173,9 +35175,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_8topology_8topology_8ParmFile_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   (*Py_TYPE(o)->tp_free)(o);
+@@ -36324,9 +36326,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_array___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->mode);
+@@ -36635,9 +36637,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_memoryview___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->obj);
+@@ -36885,9 +36887,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_memoryviewslice___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->from_object);
+diff -ruN amber20_src/AmberTools/src/pytraj/pytraj/trajectory/c_traj/c_trajectory.cpp amber20_src1/AmberTools/src/pytraj/pytraj/trajectory/c_traj/c_trajectory.cpp
+--- amber20_src/AmberTools/src/pytraj/pytraj/trajectory/c_traj/c_trajectory.cpp	2021-04-28 14:30:10.000000000 +0200
++++ amber20_src1/AmberTools/src/pytraj/pytraj/trajectory/c_traj/c_trajectory.cpp	2023-01-22 15:12:40.053219243 +0100
+@@ -16,6 +16,8 @@
+ 
+ #define PY_SSIZE_T_CLEAN
+ #include "Python.h"
++#include "CompatibilityMacros.h"
++
+ #ifndef Py_PYTHON_H
+     #error Python headers needed to compile C extensions, please install development version of Python.
+ #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
+@@ -30149,9 +30151,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_10trajectory_6c_traj_12c_trajectory_17TrajectoryCpptraj_32__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->_top);
+@@ -31394,9 +31396,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_array___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->mode);
+@@ -31705,9 +31707,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_memoryview___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->obj);
+@@ -31955,9 +31957,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_memoryviewslice___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->from_object);
+diff -ruN amber20_src/AmberTools/src/pytraj/pytraj/trajectory/c_traj/c_trajout.cpp amber20_src1/AmberTools/src/pytraj/pytraj/trajectory/c_traj/c_trajout.cpp
+--- amber20_src/AmberTools/src/pytraj/pytraj/trajectory/c_traj/c_trajout.cpp	2021-04-28 14:30:11.000000000 +0200
++++ amber20_src1/AmberTools/src/pytraj/pytraj/trajectory/c_traj/c_trajout.cpp	2023-01-22 15:12:58.463330119 +0100
+@@ -16,6 +16,8 @@
+ 
+ #define PY_SSIZE_T_CLEAN
+ #include "Python.h"
++#include "CompatibilityMacros.h"
++
+ #ifndef Py_PYTHON_H
+     #error Python headers needed to compile C extensions, please install development version of Python.
+ #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
+@@ -18179,9 +18181,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_10trajectory_6c_traj_9c_trajout_16TrajectoryWriter_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   (*Py_TYPE(o)->tp_free)(o);
+@@ -18529,9 +18531,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_array___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->mode);
+@@ -18840,9 +18842,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_memoryview___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->obj);
+@@ -19090,9 +19092,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_memoryviewslice___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->from_object);
+diff -ruN amber20_src/AmberTools/src/pytraj/pytraj/trajectory/frame.cpp amber20_src1/AmberTools/src/pytraj/pytraj/trajectory/frame.cpp
+--- amber20_src/AmberTools/src/pytraj/pytraj/trajectory/frame.cpp	2021-04-28 14:30:13.000000000 +0200
++++ amber20_src1/AmberTools/src/pytraj/pytraj/trajectory/frame.cpp	2023-01-22 15:13:25.033490024 +0100
+@@ -16,6 +16,8 @@
+ 
+ #define PY_SSIZE_T_CLEAN
+ #include "Python.h"
++#include "CompatibilityMacros.h"
++
+ #ifndef Py_PYTHON_H
+     #error Python headers needed to compile C extensions, please install development version of Python.
+ #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
+@@ -34146,9 +34148,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_pw_6pytraj_10trajectory_5frame_5Frame_3__dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->_top);
+@@ -35182,9 +35184,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_array___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->mode);
+@@ -35493,9 +35495,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_memoryview___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->obj);
+@@ -35743,9 +35745,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_memoryviewslice___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->from_object);
+diff -ruN amber20_src/AmberTools/src/pytraj/pytraj/utils/cyutils.cpp amber20_src1/AmberTools/src/pytraj/pytraj/utils/cyutils.cpp
+--- amber20_src/AmberTools/src/pytraj/pytraj/utils/cyutils.cpp	2021-04-28 14:30:15.000000000 +0200
++++ amber20_src1/AmberTools/src/pytraj/pytraj/utils/cyutils.cpp	2023-01-22 15:10:56.812596886 +0100
+@@ -16,6 +16,8 @@
+ 
+ #define PY_SSIZE_T_CLEAN
+ #include "Python.h"
++#include "CompatibilityMacros.h"
++
+ #ifndef Py_PYTHON_H
+     #error Python headers needed to compile C extensions, please install development version of Python.
+ #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
+@@ -19989,9 +19991,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_array___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->mode);
+@@ -20300,9 +20302,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_memoryview___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->obj);
+@@ -20550,9 +20552,9 @@
+   {
+     PyObject *etype, *eval, *etb;
+     PyErr_Fetch(&etype, &eval, &etb);
+-    ++Py_REFCNT(o);
++    Py_INCR_REFCNT(o);
+     __pyx_memoryviewslice___dealloc__(o);
+-    --Py_REFCNT(o);
++    Py_DECR_REFCNT(o);
+     PyErr_Restore(etype, eval, etb);
+   }
+   Py_CLEAR(p->from_object);
+diff -ruN amber20_src/AmberTools/src/pytraj/scripts/base_setup.py amber20_src1/AmberTools/src/pytraj/scripts/base_setup.py
+--- amber20_src/AmberTools/src/pytraj/scripts/base_setup.py	2021-04-28 14:29:48.000000000 +0200
++++ amber20_src1/AmberTools/src/pytraj/scripts/base_setup.py	2023-01-26 09:54:41.354690608 +0100
+@@ -489,7 +489,8 @@
+             cpptraj_info.lib_dir,
+         ]
+ 
+-        include_dirs=[cpptraj_info.include_dir, pytraj_src]
++        ambertools_inc=os.environ['AMBERTOOLS_INC']
++        include_dirs=[cpptraj_info.include_dir, pytraj_src, ambertools_inc]
+         ext_modules = []
+         if sys.platform.startswith('win'):
+             libraries=['libcpptraj']
+diff -ruN amber20_src/AmberTools/src/pytraj/setup.py amber20_src1/AmberTools/src/pytraj/setup.py
+--- amber20_src/AmberTools/src/pytraj/setup.py	2021-04-26 15:45:42.000000000 +0200
++++ amber20_src1/AmberTools/src/pytraj/setup.py	2023-01-26 09:55:47.604913750 +0100
+@@ -113,7 +113,6 @@
+     extra_compile_args = ['-O0', '-ggdb']
+     extra_link_args = ['-O0', '-ggdb']
+ 
+-
+ cython_directives = {
+     'embedsignature': True,
+     'boundscheck': False,
diff --git a/Golden_Repo/a/AMBER/fix_nmrat_error.patch b/Golden_Repo/a/AMBER/fix_nmrat_error.patch
new file mode 100644
index 0000000000000000000000000000000000000000..5bdaf088b19f893cd1142b25b9393ced1016423e
--- /dev/null
+++ b/Golden_Repo/a/AMBER/fix_nmrat_error.patch
@@ -0,0 +1,14 @@
+diff -ruN amber20_src/src/pmemd/src/cuda/gpu.cpp amber20_src1/src/pmemd/src/cuda/gpu.cpp
+Fix error about the 2D array nmrat being given 1 index before a comparison with 0
+author: Sandipan Mohanty (Juelich Supercomputing Centre)
+--- amber20_src/src/pmemd/src/cuda/gpu.cpp	2022-02-28 12:02:56.035534480 +0100
++++ amber20_src1/src/pmemd/src/cuda/gpu.cpp	2022-02-28 12:26:15.265104588 +0100
+@@ -2849,7 +2849,7 @@
+     }
+     // torsions, resttype = 3
+     else if (resttype[i] == 3) {
+-      if (nmrat[i][0] >= 0 && nmrat[i][1] >= 0 && nmrat[i][2] >= 0 && nmrat[3] >= 0) {
++      if (nmrat[i][0] >= 0 && nmrat[i][1] >= 0 && nmrat[i][2] >= 0 && nmrat[i][3] >= 0) {
+         torsions++;
+       }
+       else {