Repository: jbusecke/xMIP (language: python)

Issue:
Name change
The functionality of this package has grown quite a bit over time and I find myself laughing at lines like
```
from cmip6_preprocessing.postprocessing import ...
```

I also think the `preprocessing` might give many potential users the wrong impression of what the package does. Hence I would like to change the name.

I had a few ideas: 

- `cmip6_python`
- `cmip6_processing`
- `cmip6_tools`
- `cmip6_utils`

If you have any ideas please let me know. 


Discussion / hints:
`catnip6`

`MIPpy` like Clippy, but for your MIPpies, yippee!

![image](https://user-images.githubusercontent.com/2448579/119842368-d8323000-bec3-11eb-9ea7-f3b6a305afa7.png)

`cmip6_jazzhands`
How dare you @dcherian?

🤣
 
> cmip6_jazzhands

**NOW** we're talking @cgentemann
Perhaps @jdldeauna has some awesome ideas here or will back me up on my awesome suggestions
I like cmip6_utils
Poor Clippy! He was just always trying to be helpful haha. And +1 to jazzhands, maybe for one of the internal functions 😉  

I'm biased because "preprocessing" is what I used to call the part of my Matlab code that renamed all the variables, set all the lon/lat to uniform values, etc so I think it's great 😅 Otherwise `cmip6_utils` sound good to me, too. 

On a side note, if you rename the package what happens to the old version? If for example, we were to update our version of cmip6_preprocessing, would it just become cmip6_utils even if we specify `conda update cmip6_preprocessing`? Just curious :)   


> I like cmip6_utils

![image](https://user-images.githubusercontent.com/2448579/119882212-653caf80-beeb-11eb-82b4-7f7e2f27e94a.png)



I would like to cast a **low energy** vote for cmip_processing, since it's the processing of cmip that end users are afraid of and why this package is so helpful.
@dcherian you are triggering me! go back to Clippy please.  Those were the days.... a helpful paperclip to guide me through life. 
Hey everyone, 
I just got a talk accepted at Scipy, and I think I really should change the name (and brush up the package structure, but thats another issue).

My goal is to make it not specific for CMIP6 (ultimately this should be useful for CMIP5 aswell) and not restrict it to preprocessing. It really is covering processing more broadly at this point. Also I find my self hating to type cmip6_preprocessing all the time, so a shorter name would be exellent.

I like pyMIP/MIPpy or (pyCMIP/CMIPpy)? CMIP_utils would also work nicely.

Maybe someone (@cisaacstern?) has some cat based suggestions to enter the race here 😹
+1 cmip_utils    (keep lower-case just to make easier to type)
My only gripe with cmip_utils is the logo (I am being serious hahah)
<img width="418" alt="image" src="https://user-images.githubusercontent.com/14314623/162802967-18c576a2-cc58-457d-a3fc-d52b7dd5717c.png">
<img width="225" alt="image" src="https://user-images.githubusercontent.com/14314623/162802991-a3f6b228-2940-4ebc-b1c1-b9c8ccca3f7e.png">
Not really a fan so far. 

On the other hand CMIPpy looks cool IMO: 
<img width="280" alt="image" src="https://user-images.githubusercontent.com/14314623/162803148-ff6ffbf1-2731-4c8a-8a3b-747763f6f6c7.png">
Ill keep experimenting.


Some other ideas: 
<img width="1236" alt="image" src="https://user-images.githubusercontent.com/14314623/162803481-fc659a0f-0a3a-4fd0-a849-384f40a0b3b8.png">

I like `cmip-utils` (or `cmip_utils`) ... personally with a slight stylistic preference for dash-delimiting the package name and under-score delimiting the importable name in Python, as seems common in other projects, but delimiters is certainly not the hill I plan to die on. I'm sure the graphic design issue can be resolved! That last one seems promising.
Still like `mippy`! or `catnip` : Climate Analysis Tools & Nukes (?) for Inter-comparison Projects
> & Nukes

Whoa! Whoa! Whoa! NO nukes over here. 

catMIP? addictively easy science with Model Intercomparison Projects
catMIP!
catnip : Climate Analysis Tools for Nifty Inter-comparison Projects

Fix patch:
diff --git a/.gitattributes b/.gitattributes
index 309552ec..53994709 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,2 +1,2 @@
-cmip6_preprocessing/_version.py export-subst
+pymip/_version.py export-subst
 * text=auto eol=lf
diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
index 2289dae9..76a56295 100644
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -2,7 +2,7 @@ name: CI
 on:
   push:
     branches:
-      - "master"
+      - "main"
   pull_request:
     branches:
       - "*"
@@ -27,7 +27,7 @@ jobs:
 
   build:
     name: Build (${{ matrix.python-version }} | ${{ matrix.os }})
-    if: github.repository == 'jbusecke/cmip6_preprocessing'
+    if: github.repository == 'jbusecke/pymip'
     runs-on: ${{ matrix.os }}
     timeout-minutes: 30
     defaults:
@@ -57,7 +57,7 @@ jobs:
           channels: conda-forge
           mamba-version: '*'
           channel-priority: strict
-          activate-environment: test_env_cmip6_preprocessing # Defined in ci/environment.yml
+          activate-environment: test_env_pymip # Defined in ci/environment.yml
           auto-update-conda: false
           python-version: ${{ matrix.python-version }}
           environment-file: ci/environment.yml
@@ -107,7 +107,7 @@ jobs:
         channels: conda-forge
         mamba-version: '*'
         channel-priority: strict
-        activate-environment: test_env_cmip6_preprocessing # Defined in ci/environment-upstream-dev.yml
+        activate-environment: test_env_pymip # Defined in ci/environment-upstream-dev.yml
         auto-update-conda: false
         python-version: "3.10"
         environment-file: ci/environment-upstream-dev.yml
@@ -153,7 +153,7 @@ jobs:
         channels: conda-forge
         mamba-version: '*'
         channel-priority: strict
-        activate-environment: test_env_cmip6_preprocessing # Defined in ci/environment-upstream-dev.yml
+        activate-environment: test_env_pymip # Defined in ci/environment-upstream-dev.yml
         auto-update-conda: false
         python-version: "3.10"
         environment-file: ci/environment-cloud-test.yml
diff --git a/.github/workflows/full_archive_ci.yaml b/.github/workflows/full_archive_ci.yaml
index d406ca13..e52c422c 100644
--- a/.github/workflows/full_archive_ci.yaml
+++ b/.github/workflows/full_archive_ci.yaml
@@ -34,7 +34,7 @@ jobs:
         channels: conda-forge
         mamba-version: '*'
         channel-priority: strict
-        activate-environment: test_env_cmip6_preprocessing # Defined in ci/environment-upstream-dev.yml
+        activate-environment: test_env_pymip # Defined in ci/environment-upstream-dev.yml
         auto-update-conda: false
         python-version: 3.8
         environment-file: ci/environment-cloud-test.yml
diff --git a/.github/workflows/pythonpublish.yaml b/.github/workflows/pythonpublish.yaml
index 0a793e8e..e44fa2c9 100644
--- a/.github/workflows/pythonpublish.yaml
+++ b/.github/workflows/pythonpublish.yaml
@@ -1,4 +1,4 @@
-name: Build and Upload cmip6_preprocessing to PyPI
+name: Build and Upload pymip to PyPI
 on:
   release:
     types:
@@ -7,7 +7,7 @@ on:
 jobs:
   build-artifacts:
     runs-on: ubuntu-latest
-    if: github.repository == 'jbusecke/cmip6_preprocessing'
+    if: github.repository == 'jbusecke/pymip'
     steps:
       - uses: actions/checkout@v3
         with:
@@ -35,7 +35,7 @@ jobs:
         run: |
           python -m twine check dist/*
           pwd
-          if [ -f dist/cmip6_preprocessing-0.0.0.tar.gz ]; then
+          if [ -f dist/pymip-0.0.0.tar.gz ]; then
             echo "❌ INVALID VERSION NUMBER"
             exit 1
           else
diff --git a/.gitignore b/.gitignore
index 92dc420c..2b971065 100644
--- a/.gitignore
+++ b/.gitignore
@@ -70,4 +70,4 @@ mydask.png
 .vscode
 .mypy_cache
 readthedocs.yml
-cmip6_preprocessing/_version.py
+pymip/_version.py
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 2cffb625..bfe53b3a 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -5,7 +5,7 @@ repos:
 #   rev: 1.3.2
 #   hooks:
 #     - id: interrogate
-#       exclude: ^(docs|setup.py|tests|cmip6_preprocessing/_version.py|cmip6_preprocessing/__init__.py)
+#       exclude: ^(docs|setup.py|tests|pymip/_version.py|pymip/__init__.py)
 #       args: [--config=pyproject.toml]
 
 - repo: https://github.com/pre-commit/pre-commit-hooks
diff --git a/MANIFEST.in b/MANIFEST.in
index 837f7588..ab105cb6 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -1,1 +1,1 @@
-recursive-include cmip6_preprocessing *
+recursive-include pymip *
diff --git a/README.md b/README.md
index cf296490..ae4978d5 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,10 @@
 [![Documentation Status](https://readthedocs.org/projects/cmip6-preprocessing/badge/?version=latest)](https://cmip6-preprocessing.readthedocs.io/en/latest/?badge=latest)
-[![Anaconda Cloud](https://anaconda.org/conda-forge/cmip6_preprocessing/badges/version.svg)](https://anaconda.org/conda-forge/cmip6_preprocessing)
-[![conda-forge](https://img.shields.io/conda/dn/conda-forge/cmip6_preprocessing?label=conda-forge)](https://anaconda.org/conda-forge/cmip6_preprocessing)
-[![Pypi](https://img.shields.io/pypi/v/cmip6_preprocessing.svg)](https://pypi.org/project/cmip6_preprocessing)
-[![Build Status](https://img.shields.io/github/workflow/status/jbusecke/cmip6_preprocessing/CI?logo=github)](https://github.com/jbusecke/cmip6_preprocessing/actions)
-[![Full Archive CI](https://github.com/jbusecke/cmip6_preprocessing/workflows/Full%20Archive%20CI/badge.svg)](https://github.com/jbusecke/cmip6_preprocessing/actions/workflows/full_archive_ci.yaml)
-[![codecov](https://codecov.io/gh/jbusecke/cmip6_preprocessing/branch/master/graph/badge.svg)](https://codecov.io/gh/jbusecke/cmip6_preprocessing)
+[![Anaconda Cloud](https://anaconda.org/conda-forge/pymip/badges/version.svg)](https://anaconda.org/conda-forge/pymip)
+[![conda-forge](https://img.shields.io/conda/dn/conda-forge/pymip?label=conda-forge)](https://anaconda.org/conda-forge/pymip)
+[![Pypi](https://img.shields.io/pypi/v/pymip.svg)](https://pypi.org/project/pymip)
+[![Build Status](https://img.shields.io/github/workflow/status/jbusecke/pymip/CI?logo=github)](https://github.com/jbusecke/pymip/actions)
+[![Full Archive CI](https://github.com/jbusecke/pymip/workflows/Full%20Archive%20CI/badge.svg)](https://github.com/jbusecke/pymip/actions/workflows/full_archive_ci.yaml)
+[![codecov](https://codecov.io/gh/jbusecke/pymip/branch/main/graph/badge.svg)](https://codecov.io/gh/jbusecke/pymip)
 [![License:MIT](https://img.shields.io/badge/License-MIT-lightgray.svg?style=flt-square)](https://opensource.org/licenses/MIT)
 [![DOI](https://zenodo.org/badge/215606850.svg)](https://zenodo.org/badge/latestdoi/215606850)
 
@@ -18,9 +18,13 @@ Free access to software and hollow diversity statements are hardly enough to cru
 
 If you are using this package, I ask you to go beyond just speaking out and donate [here](https://secure.actblue.com/donate/cmip6_preprocessing) to [Data for Black Lives](http://d4bl.org/) and [Black Lives Matter Action](https://blacklivesmatter.com/global-actions/).
 
-I explicitly welcome suggestions regarding the wording of this statement and for additional organizations to support. Please raise an [issue](https://github.com/jbusecke/cmip6_preprocessing/issues) for suggestions.
+I explicitly welcome suggestions regarding the wording of this statement and for additional organizations to support. Please raise an [issue](https://github.com/jbusecke/pymip/issues) for suggestions.
 
-# cmip6_preprocessing
+
+
+# pymip (formerly cmip6_preprocessing)
+
+This package facilitates the cleaning, organization and interactive analysis of Model Intercomparison Projects (MIPs) within the [Pangeo](https://pangeo.io) software stack.
 
 Are you interested in CMIP6 data, but find that is is not quite `analysis ready`? Do you just want to run a simple (or complicated) analysis on various models and end up having to write logic for each seperate case, because various datasets still require fixes to names, coordinates, etc.? Then this package is for you.
 
@@ -39,19 +43,19 @@ The following issues are under development:
 1. Reconstruct/find grid metrics
 2. Arrange different variables on their respective staggered grid, so they can work seamlessly with [xgcm](https://xgcm.readthedocs.io/en/latest/)
 
-Check out this recent Earthcube [notebook](https://github.com/earthcube2020/ec20_busecke_etal) (cite via doi: [10.1002/essoar.10504241.1](https://www.essoar.org/doi/10.1002/essoar.10504241.1)) for a high level demo of `cmip6_preprocessing` and [xgcm](https://github.com/xgcm/xgcm).
+Check out this recent Earthcube [notebook](https://github.com/earthcube2020/ec20_busecke_etal) (cite via doi: [10.1002/essoar.10504241.1](https://www.essoar.org/doi/10.1002/essoar.10504241.1)) for a high level demo of `pymip` and [xgcm](https://github.com/xgcm/xgcm).
 
 
 ## Installation
 
-Install `cmip6_preprocessing` via pip:
+Install `pymip` via pip:
 
-`pip install cmip6_preprocessing`
+`pip install pymip`
 
 or conda:
 
-`conda install -c conda-forge cmip6_preprocessing`
+`conda install -c conda-forge pymip`
 
-To install the newest master from github you can use pip aswell:
+To install the newest main from github you can use pip aswell:
 
-`pip install git+pip install git+https://github.com/jbusecke/cmip6_preprocessing.git`
+`pip install git+pip install git+https://github.com/jbusecke/pymip.git`
diff --git a/ci/environment-upstream-dev.yml b/ci/environment-upstream-dev.yml
index 07b27915..143ffa52 100644
--- a/ci/environment-upstream-dev.yml
+++ b/ci/environment-upstream-dev.yml
@@ -1,4 +1,4 @@
-name: test_env_cmip6_preprocessing
+name: test_env_pymip
 channels:
   - conda-forge
 dependencies:
@@ -8,7 +8,7 @@ dependencies:
   - pip
   - cartopy #installing this without conda is a nightmare, so ill leave it here
   - xesmf # same here
-  - rasterio # Trying to get around an apparent bug with py 3.10 + pip + rasterio (https://github.com/jbusecke/cmip6_preprocessing/pull/231#issuecomment-1132190649)
+  - rasterio # Trying to get around an apparent bug with py 3.10 + pip + rasterio (https://github.com/jbusecke/pymip/pull/231#issuecomment-1132190649)
   # These are only a patch until xesmf > 0.6.2 is released. See https://github.com/pangeo-data/xESMF/issues/170
   - numba
   - sparse>=0.8.0
diff --git a/ci/environment.yml b/ci/environment.yml
index c46dc420..adccbfc0 100644
--- a/ci/environment.yml
+++ b/ci/environment.yml
@@ -1,4 +1,4 @@
-name: test_env_cmip6_preprocessing
+name: test_env_pymip
 channels:
   - conda-forge
 dependencies:
diff --git a/cmip6_preprocessing/junit.xml b/cmip6_preprocessing/junit.xml
deleted file mode 100644
index a031a2c5..00000000
--- a/cmip6_preprocessing/junit.xml
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?><testsuites><testsuite errors="0" failures="1" hostname="jupyter-0000-2d0001-2d8571-2d865x" name="pytest" skipped="0" tests="1" time="2.110" timestamp="2019-10-26T04:01:43.012213"><testcase classname="cmip6_preprocessing.tests.test_preprocess" file="cmip6_preprocessing/tests/test_preprocess.py" line="4" name="test_renaming_dict" time="0.002"><failure message="AssertionError: assert {&apos;AWI-CM-1-1-...2-WACCM&apos;, ...} == {&apos;AWI-CM-1-1-...2-WACCM&apos;, ...}
-  Extra items in the right set:
-  &apos;FGOALS-g3&apos;
-  &apos;FIO-ESM-2-0&apos;
-  &apos;MRI-ESM2-0&apos;
-  &apos;HadGEM3-GC31-MM&apos;
-  Full diff:
-  {&apos;AWI-CM-1-1-MR&apos;,
-  &apos;BCC-CSM2-MR&apos;,
-  &apos;BCC-ESM1&apos;,
-  &apos;CAMS-CSM1-0&apos;,
-  &apos;CESM2&apos;,
-  &apos;CESM2-WACCM&apos;,
-  &apos;CNRM-CM6-1&apos;,
-  &apos;CNRM-ESM2-1&apos;,
-  &apos;CanESM5&apos;,
-  &apos;E3SM-1-0&apos;,
-  &apos;EC-Earth3&apos;,
-  &apos;EC-Earth3-LR&apos;,
-  &apos;EC-Earth3-Veg&apos;,
-  &apos;FGOALS-f3-L&apos;,
-  +  &apos;FGOALS-g3&apos;,
-  +  &apos;FIO-ESM-2-0&apos;,
-  &apos;GFDL-CM4&apos;,
-  &apos;GFDL-ESM4&apos;,
-  &apos;GISS-E2-1-G&apos;,
-  &apos;GISS-E2-1-G-CC&apos;,
-  &apos;GISS-E2-1-H&apos;,
-  &apos;HadGEM3-GC31-LL&apos;,
-  +  &apos;HadGEM3-GC31-MM&apos;,
-  &apos;IPSL-CM6A-LR&apos;,
-  &apos;MCM-UA-1-0&apos;,
-  &apos;MIROC-ES2L&apos;,
-  &apos;MIROC6&apos;,
-  +  &apos;MRI-ESM2-0&apos;,
-  &apos;NESM3&apos;,
-  &apos;NorCPM1&apos;,
-  &apos;SAM0-UNICON&apos;,
-  &apos;UKESM1-0-LL&apos;}">Traceback (most recent call last):
-  File &quot;/home/jovyan/cmip6_preprocessing/cmip6_preprocessing/tests/test_preprocess.py&quot;, line 16, in test_renaming_dict
-    assert set(list(cmip6_renaming_dict().keys())) == all_models
-AssertionError: assert {&apos;AWI-CM-1-1-...2-WACCM&apos;, ...} == {&apos;AWI-CM-1-1-...2-WACCM&apos;, ...}
-  Extra items in the right set:
-  &apos;FGOALS-g3&apos;
-  &apos;FIO-ESM-2-0&apos;
-  &apos;MRI-ESM2-0&apos;
-  &apos;HadGEM3-GC31-MM&apos;
-  Full diff:
-  {&apos;AWI-CM-1-1-MR&apos;,
-  &apos;BCC-CSM2-MR&apos;,
-  &apos;BCC-ESM1&apos;,
-  &apos;CAMS-CSM1-0&apos;,
-  &apos;CESM2&apos;,
-  &apos;CESM2-WACCM&apos;,
-  &apos;CNRM-CM6-1&apos;,
-  &apos;CNRM-ESM2-1&apos;,
-  &apos;CanESM5&apos;,
-  &apos;E3SM-1-0&apos;,
-  &apos;EC-Earth3&apos;,
-  &apos;EC-Earth3-LR&apos;,
-  &apos;EC-Earth3-Veg&apos;,
-  &apos;FGOALS-f3-L&apos;,
-  +  &apos;FGOALS-g3&apos;,
-  +  &apos;FIO-ESM-2-0&apos;,
-  &apos;GFDL-CM4&apos;,
-  &apos;GFDL-ESM4&apos;,
-  &apos;GISS-E2-1-G&apos;,
-  &apos;GISS-E2-1-G-CC&apos;,
-  &apos;GISS-E2-1-H&apos;,
-  &apos;HadGEM3-GC31-LL&apos;,
-  +  &apos;HadGEM3-GC31-MM&apos;,
-  &apos;IPSL-CM6A-LR&apos;,
-  &apos;MCM-UA-1-0&apos;,
-  &apos;MIROC-ES2L&apos;,
-  &apos;MIROC6&apos;,
-  +  &apos;MRI-ESM2-0&apos;,
-  &apos;NESM3&apos;,
-  &apos;NorCPM1&apos;,
-  &apos;SAM0-UNICON&apos;,
-  &apos;UKESM1-0-LL&apos;}</failure></testcase></testsuite></testsuites>
diff --git a/codecov.yml b/codecov.yml
index 4d7d808d..18d89aee 100644
--- a/codecov.yml
+++ b/codecov.yml
@@ -18,5 +18,5 @@ coverage:
 ignore:
   - "setup.py"
   - "tests/*"
-  - "cmip6_preprocessing/__init__.py"
-  - "cmip6_preprocessing/_version.py"
+  - "pymip/__init__.py"
+  - "pymip/_version.py"
diff --git a/docs/api.rst b/docs/api.rst
index 5697758d..7622595e 100644
--- a/docs/api.rst
+++ b/docs/api.rst
@@ -3,14 +3,14 @@
 
 preprocessing
 =============
-.. automodule:: cmip6_preprocessing.preprocessing
+.. automodule:: pymip.preprocessing
    :members:
    :undoc-members:
    :show-inheritance:
 
 postprocessing
 ==============
-.. automodule:: cmip6_preprocessing.postprocessing
+.. automodule:: pymip.postprocessing
    :members:
    :undoc-members:
    :show-inheritance:
@@ -18,21 +18,21 @@ postprocessing
 
 grids
 =====
-.. automodule:: cmip6_preprocessing.grids
+.. automodule:: pymip.grids
    :members:
    :undoc-members:
    :show-inheritance:
 
 regionmask
 ==========
-.. automodule:: cmip6_preprocessing.regionmask
+.. automodule:: pymip.regionmask
    :members:
    :undoc-members:
    :show-inheritance:
 
 utils
 =====
-.. automodule:: cmip6_preprocessing.utils
+.. automodule:: pymip.utils
    :members:
    :undoc-members:
    :show-inheritance:
diff --git a/docs/conf.py b/docs/conf.py
index 85771e3e..404199b0 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -22,10 +22,10 @@
 os.environ["PYTHONPATH"] = str(root)
 sys.path.insert(0, str(root))
 
-import cmip6_preprocessing  # isort:skip
+import pymip  # isort:skip
 from importlib.metadata import version  # isort:skip
 
-release = version("cmip6_preprocessing")
+release = version("pymip")
 # for example take major/minor/patch
 version = ".".join(release.split(".")[:3])
 
@@ -33,9 +33,9 @@
 
 # -- Project information -----------------------------------------------------
 
-project = "cmip6_preprocessing"
-copyright = "2021, cmip6_preprocessing maintainers"
-author = "cmip6_preprocessing maintainers"
+project = "pymip"
+copyright = "2021, pymip maintainers"
+author = "pymip maintainers"
 
 
 # -- General configuration ---------------------------------------------------
@@ -70,8 +70,8 @@
 
 # link to github issues
 extlinks = {
-    "issue": ("https://github.com/jbusecke/cmip6_preprocessing/issues/%s", "GH#"),
-    "pull": ("https://github.com/jbusecke/cmip6_preprocessing/issues/%s", "GH#"),
+    "issue": ("https://github.com/jbusecke/pymip/issues/%s", "GH#"),
+    "pull": ("https://github.com/jbusecke/pymip/issues/%s", "GH#"),
 }
 
 # -- Options for HTML output -------------------------------------------------
diff --git a/docs/contributor-guide.rst b/docs/contributor-guide.rst
index 3313e715..70828d89 100644
--- a/docs/contributor-guide.rst
+++ b/docs/contributor-guide.rst
@@ -3,42 +3,42 @@
 Contributor Guide
 -----------------
 
-**cmip6_preprocessing** is meant to be a community driven package and we welcome feedback and
+**pymip** is meant to be a community driven package and we welcome feedback and
 contributions.
 
 Did you notice a bug? Are you missing a feature? A good first starting place is to
-open an issue in the `github issues page <https://github.com/jbusecke/cmip6_preprocessing/issues>`_.
+open an issue in the `github issues page <https://github.com/jbusecke/pymip/issues>`_.
 
 
-In order to contribute to cmip6_preprocessing, please fork the repository and submit a pull request.
+In order to contribute to pymip, please fork the repository and submit a pull request.
 A good step by step tutorial for this can be found in the
 `xarray contributor guide <https://xarray.pydata.org/en/stable/contributing.html#working-with-the-code>`_.
 
 
 Environments
 ^^^^^^^^^^^^
-The easiest way to start developing cmip6_preprocessing pull requests,
-is to install one of the conda environments provided in the `ci folder <https://github.com/jbusecke/cmip6_preprocessing/tree/master/ci>`_::
+The easiest way to start developing pymip pull requests,
+is to install one of the conda environments provided in the `ci folder <https://github.com/jbusecke/pymip/tree/main/ci>`_::
 
     conda env create -f ci/environment-py3.8.yml
 
 Activate the environment with::
 
-    conda activate test_env_cmip6_preprocessing
+    conda activate test_env_pymip
 
 We use `black <https://github.com/python/black>`_ as code formatter and pull request will
 fail in the CI if not properly formatted.
 
 All conda environments contain black and you can reformat code using::
 
-    black cmip6_preprocessing
+    black pymip
 
 `pre-commit <https://pre-commit.com/>`_ provides an automated way to reformat your code
 prior to each commit. Simply install pre-commit::
 
     pip install pre-commit
 
-and install it in the cmip6_preprocessing root directory with::
+and install it in the pymip root directory with::
 
     pre-commit install
 
@@ -63,7 +63,7 @@ For example::
 will skip the expensive cloud CI for intermediate pushes.
 
 
-How to release a new version of cmip6_preprocessing (for maintainers only)
+How to release a new version of pymip (for maintainers only)
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 The process of releasing at this point is very easy.
 
@@ -72,7 +72,7 @@ We need only two things: A PR to update the documentation and and making a relea
 1. Make sure that all the new features/bugfixes etc are appropriately documented in `doc/whats-new.rst`, add the date to the current release and make an empty (unreleased) entry for the next minor release as a PR.
 2. Navigate to the 'tags' symbol on the repos main page, click on 'Releases' and on 'Draft new release' on the right. Add the version number and a short description and save the release.
 
-From here the github actions take over and package things for `Pypi <https://pypi.org/project/cmip6_preprocessing/>`_.
-The conda-forge package will be triggered by the Pypi release and you will have to approve a PR in `cmip6_preprocessing-feedstock <https://github.com/conda-forge/cmip6_preprocessing-feedstock>`_. This takes a while, usually a few hours to a day.
+From here the github actions take over and package things for `Pypi <https://pypi.org/project/pymip/>`_.
+The conda-forge package will be triggered by the Pypi release and you will have to approve a PR in `pymip-feedstock <https://github.com/conda-forge/pymip-feedstock>`_. This takes a while, usually a few hours to a day.
 
 Thats it!
diff --git a/docs/drift_removal.ipynb b/docs/drift_removal.ipynb
index b01552ab..147fe600 100644
--- a/docs/drift_removal.ipynb
+++ b/docs/drift_removal.ipynb
@@ -22,8 +22,8 @@
     "import xarray as xr\n",
     "import numpy as np\n",
     "\n",
-    "from cmip6_preprocessing.utils import google_cmip_col\n",
-    "from cmip6_preprocessing.preprocessing import combined_preprocessing"
+    "from pymip.utils import google_cmip_col\n",
+    "from pymip.preprocessing import combined_preprocessing"
    ]
   },
   {
@@ -391,7 +391,7 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "from cmip6_preprocessing.drift_removal import unify_time\n",
+    "from pymip.drift_removal import unify_time\n",
     "\n",
     "# the default will adjust the time convention from the first input (`parent`) to the second (`child`)\n",
     "ds_control_adj, ds_historical_adj = unify_time(ds_control, ds_historical)"
@@ -490,7 +490,7 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "from cmip6_preprocessing.drift_removal import replace_time\n",
+    "from pymip.drift_removal import replace_time\n",
     "# with the defaults it will just replace the dates with new ones which have time stamps at the beginning of the month.\n",
     "ds_historical_adj = replace_time(ds_historical_adj) "
    ]
@@ -625,7 +625,7 @@
     "\n",
     "This was a neat exercise, but you might have noticed that the control run shows a pretty pronounced trend (decreasing temperature). Since this is an unforced control run, we have to assume that the model is not completely equilibrated and continues to `drift`. This drift can affect the runs which are branched off this run. \n",
     "\n",
-    "It is often desirable to remove the drift, or more precisely subtract the linear trend of the control run over the time period of the branched off runs. `cmip6_preprocessing` makes this easy.\n",
+    "It is often desirable to remove the drift, or more precisely subtract the linear trend of the control run over the time period of the branched off runs. `pymip` makes this easy.\n",
     "\n",
     "In this context the words `trend` and `drift` are used as follows:\n",
     "- `trend` general expression for a linear trend over a timeseries\n",
@@ -1544,7 +1544,7 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "from cmip6_preprocessing.drift_removal import calculate_drift, remove_trend"
+    "from pymip.drift_removal import calculate_drift, remove_trend"
    ]
   },
   {
diff --git a/docs/environment.yml b/docs/environment.yml
index a59e5904..7a27caca 100644
--- a/docs/environment.yml
+++ b/docs/environment.yml
@@ -1,4 +1,4 @@
-name: cmip6_preprocessing_docs
+name: pymip_docs
 channels:
   - conda-forge
 dependencies:
diff --git a/docs/images/logo.png b/docs/images/logo.png
index a836118d..92afc5b9 100644
Binary files a/docs/images/logo.png and b/docs/images/logo.png differ
diff --git a/docs/index.rst b/docs/index.rst
index 05b56563..9a26bb02 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -1,4 +1,4 @@
-.. cmip6_preprocessing documentation master file, created by
+.. pymip documentation master file, created by
    sphinx-quickstart on Thu Feb 25 16:11:36 2021.
    You can adapt this file completely to your liking, but it should at least
    contain the root `toctree` directive.
@@ -21,7 +21,7 @@ However, from the viewpoint of analyzing these data, the output is still quite '
 inherently difficult.
 
 Most of the problems arise from differences in the convention the model output is provided in. This includes, but is not limited to different naming conventions for coordinate variables,  units, grid variables.
-`cmip6_preprocessing` aims to provide lightweight tools, that let you get right to the science, without spending hours on cleaning up the data.
+`pymip` aims to provide lightweight tools, that let you get right to the science, without spending hours on cleaning up the data.
 
 
 
@@ -34,21 +34,21 @@ Installation from Conda Forge
 The easiest way to install xgcm along with its dependencies is via conda
 forge::
 
-    conda install -c conda-forge cmip6_preprocessing
+    conda install -c conda-forge pymip
 
 Installation from Pip
 ^^^^^^^^^^^^^^^^^^^^^
 
 An alternative is to use pip::
 
-    pip install cmip6_preprocessing
+    pip install pymip
 
 Installation from GitHub
 ^^^^^^^^^^^^^^^^^^^^^^^^
 
 You can get the newest version by installing directly from GitHub::
 
-    pip install git+https://github.com/jbusecke/cmip6_preprocessing.git
+    pip install git+https://github.com/jbusecke/pymip.git
 
 
 Getting Started
diff --git a/docs/postprocessing.ipynb b/docs/postprocessing.ipynb
index f8f6a423..4f961f6a 100644
--- a/docs/postprocessing.ipynb
+++ b/docs/postprocessing.ipynb
@@ -94,8 +94,8 @@
    ],
    "source": [
     "# lets start by loading a few example dataset\n",
-    "from cmip6_preprocessing.utils import google_cmip_col\n",
-    "from cmip6_preprocessing.preprocessing import combined_preprocessing\n",
+    "from pymip.utils import google_cmip_col\n",
+    "from pymip.preprocessing import combined_preprocessing\n",
     "\n",
     "col = google_cmip_col()\n",
     "experiment_id='historical'\n",
@@ -157,7 +157,7 @@
     }
    ],
    "source": [
-    "from cmip6_preprocessing.postprocessing import merge_variables\n",
+    "from pymip.postprocessing import merge_variables\n",
     "\n",
     "ddict_merged = merge_variables(ddict)\n",
     "list(ddict_merged.keys())"
@@ -1371,7 +1371,7 @@
      "name": "stderr",
      "output_type": "stream",
      "text": [
-      "/home/jovyan/2_AREAS/cmip6_preprocessing/cmip6_preprocessing/postprocessing.py:113: UserWarning: Match attributes ['variable_id'] not found in any of the datasets.         This can happen when several combination functions are used.\n",
+      "/home/jovyan/2_AREAS/pymip/pymip/postprocessing.py:113: UserWarning: Match attributes ['variable_id'] not found in any of the datasets.         This can happen when several combination functions are used.\n",
       "  warnings.warn(\n"
      ]
     },
@@ -2307,7 +2307,7 @@
     }
    ],
    "source": [
-    "from cmip6_preprocessing.postprocessing import concat_members\n",
+    "from pymip.postprocessing import concat_members\n",
     "\n",
     "ddict_concat = concat_members(ddict_merged)\n",
     "print(list(ddict_concat.keys()))\n",
@@ -3540,7 +3540,7 @@
     }
    ],
    "source": [
-    "from cmip6_preprocessing.postprocessing import pick_first_member\n",
+    "from pymip.postprocessing import pick_first_member\n",
     "ddict_single_member = pick_first_member(ddict_merged)\n",
     "print(list(ddict_single_member.keys()))\n",
     "ddict_single_member['GFDL-ESM4.gn.historical.Omon']"
@@ -4498,7 +4498,7 @@
     }
    ],
    "source": [
-    "from cmip6_preprocessing.postprocessing import combine_datasets\n",
+    "from pymip.postprocessing import combine_datasets\n",
     "\n",
     "def pick_first_member(ds_list, **kwargs):\n",
     "    return ds_list[0]\n",
@@ -4625,7 +4625,7 @@
    "source": [
     "For the CanESM5-CanOE model, all variables are on the native `gn` grid. We could combine the variables simply using the logic from above. But the GFDL-ESM4 model provides oxygen `o2` only on a regridded `gr` grid, while the potential temperature `thetao` is actually available for both grids. If we are fine with using the lower resolution regridded (`gr`) we could just filter for that during the selection, but there are cases where one might want to preserve as much detail as possible, or where another variable is only available on the native grid. In that case we can use [xESMF](https://github.com/pangeo-data/xESMF) to interpolate from one grid to another.\n",
     "\n",
-    "cmip6_preprocessing provides a convenient wrapper which will interpolate datasets onto the desired grid if necessary:"
+    "pymip provides a convenient wrapper which will interpolate datasets onto the desired grid if necessary:"
    ]
   },
   {
@@ -4635,7 +4635,7 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "from cmip6_preprocessing.postprocessing import (\n",
+    "from pymip.postprocessing import (\n",
     "    interpolate_grid_label\n",
     ")"
    ]
@@ -5575,7 +5575,7 @@
        "</svg>\n",
        "</td>\n",
        "</tr>\n",
-       "</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span>o2</span></div><div class='xr-var-dims'>(time, lev, y, x)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>dask.array&lt;chunksize=(13, 35, 576, 720), meta=np.ndarray&gt;</div><input id='attrs-1583b454-fbea-49fc-b7b8-bbcb2e220fd2' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-1583b454-fbea-49fc-b7b8-bbcb2e220fd2' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-8334f357-903a-4d77-9476-4be8faf07449' class='xr-var-data-in' type='checkbox'><label for='data-8334f357-903a-4d77-9476-4be8faf07449' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>cell_measures :</span></dt><dd>area: areacello volume: volcello</dd><dt><span>cell_methods :</span></dt><dd>area: mean where sea time: mean</dd><dt><span>comment :</span></dt><dd>Model data on the 1x1 grid includes values in all cells for which any ocean exists on the native grid. For mapping purposes, we recommend using a land mask such as World Ocean Atlas to cover these areas of partial land.  For calculating approximate integrals, we recommend multiplying by cell volume (volcello).</dd><dt><span>interp_method :</span></dt><dd>conserve_order1</dd><dt><span>long_name :</span></dt><dd>Dissolved Oxygen Concentration</dd><dt><span>original_name :</span></dt><dd>o2</dd><dt><span>standard_name :</span></dt><dd>mole_concentration_of_dissolved_molecular_oxygen_in_sea_water</dd><dt><span>units :</span></dt><dd>mol m-3</dd><dt><span>cmip6_preprocessing_regrid_method :</span></dt><dd>bilinear</dd></dl></div><div class='xr-var-data'><table>\n",
+       "</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span>o2</span></div><div class='xr-var-dims'>(time, lev, y, x)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>dask.array&lt;chunksize=(13, 35, 576, 720), meta=np.ndarray&gt;</div><input id='attrs-1583b454-fbea-49fc-b7b8-bbcb2e220fd2' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-1583b454-fbea-49fc-b7b8-bbcb2e220fd2' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-8334f357-903a-4d77-9476-4be8faf07449' class='xr-var-data-in' type='checkbox'><label for='data-8334f357-903a-4d77-9476-4be8faf07449' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>cell_measures :</span></dt><dd>area: areacello volume: volcello</dd><dt><span>cell_methods :</span></dt><dd>area: mean where sea time: mean</dd><dt><span>comment :</span></dt><dd>Model data on the 1x1 grid includes values in all cells for which any ocean exists on the native grid. For mapping purposes, we recommend using a land mask such as World Ocean Atlas to cover these areas of partial land.  For calculating approximate integrals, we recommend multiplying by cell volume (volcello).</dd><dt><span>interp_method :</span></dt><dd>conserve_order1</dd><dt><span>long_name :</span></dt><dd>Dissolved Oxygen Concentration</dd><dt><span>original_name :</span></dt><dd>o2</dd><dt><span>standard_name :</span></dt><dd>mole_concentration_of_dissolved_molecular_oxygen_in_sea_water</dd><dt><span>units :</span></dt><dd>mol m-3</dd><dt><span>pymip_regrid_method :</span></dt><dd>bilinear</dd></dl></div><div class='xr-var-data'><table>\n",
        "<tr>\n",
        "<td>\n",
        "<table>\n",
@@ -6828,7 +6828,7 @@
     "These are essential to compute e.g. global averages since the cells in ocean models are usually not of equal size.\n",
     "\n",
     "Within the CMIP6 archive grid metrics are stored as seperate variables like `areacello` (horizontal grid area) or `thkcello`(vertical cell thickness), and it can be rather cumbersome to match these. \n",
-    "`cmip6_preprocessing` has some functions to make this easy, which also offer some options to use metrics from e.g. another experiment in case these are not available (more on that below)."
+    "`pymip` has some functions to make this easy, which also offer some options to use metrics from e.g. another experiment in case these are not available (more on that below)."
    ]
   },
   {
@@ -6898,8 +6898,8 @@
     }
    ],
    "source": [
-    "from cmip6_preprocessing.utils import google_cmip_col\n",
-    "from cmip6_preprocessing.preprocessing import combined_preprocessing\n",
+    "from pymip.utils import google_cmip_col\n",
+    "from pymip.preprocessing import combined_preprocessing\n",
     "\n",
     "col = google_cmip_col()\n",
     "experiment_id='historical'\n",
@@ -6987,7 +6987,7 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "from cmip6_preprocessing.postprocessing import match_metrics\n",
+    "from pymip.postprocessing import match_metrics\n",
     "ddict_matched = match_metrics(ddict, ddict_metrics, ['areacello'])"
    ]
   },
@@ -7778,7 +7778,7 @@
        "</svg>\n",
        "</td>\n",
        "</tr>\n",
-       "</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span>areacello</span></div><div class='xr-var-dims'>(y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>dask.array&lt;chunksize=(220, 256), meta=np.ndarray&gt;</div><input id='attrs-b648af0f-0205-4f78-b504-e5efd442d86b' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-b648af0f-0205-4f78-b504-e5efd442d86b' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-2e4c61b7-3e8c-4b5f-bc86-ebefe200a745' class='xr-var-data-in' type='checkbox'><label for='data-2e4c61b7-3e8c-4b5f-bc86-ebefe200a745' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>cell_methods :</span></dt><dd>area: sum</dd><dt><span>comment :</span></dt><dd>Horizontal area of ocean grid cells</dd><dt><span>history :</span></dt><dd>2019-09-11T14:21:40Z altered by CMOR: replaced missing value flag (-9e+33) and corresponding data with standard missing value (1e+20).</dd><dt><span>long_name :</span></dt><dd>Grid-Cell Area for Ocean Variables</dd><dt><span>original_name :</span></dt><dd>areacello</dd><dt><span>standard_name :</span></dt><dd>cell_area</dd><dt><span>units :</span></dt><dd>m2</dd><dt><span>original_key :</span></dt><dd>CMIP.MPI-M.MPI-ESM1-2-LR.historical.r1i1p1f1.Ofx.areacello.gn.gs://cmip6/CMIP6/CMIP/MPI-M/MPI-ESM1-2-LR/historical/r1i1p1f1/Ofx/areacello/gn/v20190710/.nan.20190710</dd><dt><span>parsed_with :</span></dt><dd>cmip6_preprocessing/postprocessing/parse_metric</dd></dl></div><div class='xr-var-data'><table>\n",
+       "</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span>areacello</span></div><div class='xr-var-dims'>(y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>dask.array&lt;chunksize=(220, 256), meta=np.ndarray&gt;</div><input id='attrs-b648af0f-0205-4f78-b504-e5efd442d86b' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-b648af0f-0205-4f78-b504-e5efd442d86b' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-2e4c61b7-3e8c-4b5f-bc86-ebefe200a745' class='xr-var-data-in' type='checkbox'><label for='data-2e4c61b7-3e8c-4b5f-bc86-ebefe200a745' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>cell_methods :</span></dt><dd>area: sum</dd><dt><span>comment :</span></dt><dd>Horizontal area of ocean grid cells</dd><dt><span>history :</span></dt><dd>2019-09-11T14:21:40Z altered by CMOR: replaced missing value flag (-9e+33) and corresponding data with standard missing value (1e+20).</dd><dt><span>long_name :</span></dt><dd>Grid-Cell Area for Ocean Variables</dd><dt><span>original_name :</span></dt><dd>areacello</dd><dt><span>standard_name :</span></dt><dd>cell_area</dd><dt><span>units :</span></dt><dd>m2</dd><dt><span>original_key :</span></dt><dd>CMIP.MPI-M.MPI-ESM1-2-LR.historical.r1i1p1f1.Ofx.areacello.gn.gs://cmip6/CMIP6/CMIP/MPI-M/MPI-ESM1-2-LR/historical/r1i1p1f1/Ofx/areacello/gn/v20190710/.nan.20190710</dd><dt><span>parsed_with :</span></dt><dd>pymip/postprocessing/parse_metric</dd></dl></div><div class='xr-var-data'><table>\n",
        "<tr>\n",
        "<td>\n",
        "<table>\n",
@@ -8998,7 +8998,7 @@
        "</svg>\n",
        "</td>\n",
        "</tr>\n",
-       "</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span>areacello</span></div><div class='xr-var-dims'>(y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>dask.array&lt;chunksize=(220, 256), meta=np.ndarray&gt;</div><input id='attrs-1814c4ad-7f97-4281-b045-30bbfc1c51e0' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-1814c4ad-7f97-4281-b045-30bbfc1c51e0' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-cecfb300-51a7-4c4c-ab1e-594e28e900bb' class='xr-var-data-in' type='checkbox'><label for='data-cecfb300-51a7-4c4c-ab1e-594e28e900bb' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>cell_methods :</span></dt><dd>area: sum</dd><dt><span>comment :</span></dt><dd>Horizontal area of ocean grid cells</dd><dt><span>history :</span></dt><dd>2019-09-02T13:08:47Z altered by CMOR: replaced missing value flag (-9e+33) and corresponding data with standard missing value (1e+20).</dd><dt><span>long_name :</span></dt><dd>Grid-Cell Area for Ocean Variables</dd><dt><span>original_name :</span></dt><dd>areacello</dd><dt><span>standard_name :</span></dt><dd>cell_area</dd><dt><span>units :</span></dt><dd>m2</dd><dt><span>original_key :</span></dt><dd>CMIP.MPI-M.MPI-ESM1-2-LR.historical.r2i1p1f1.Ofx.areacello.gn.gs://cmip6/CMIP6/CMIP/MPI-M/MPI-ESM1-2-LR/historical/r2i1p1f1/Ofx/areacello/gn/v20190710/.nan.20190710</dd><dt><span>parsed_with :</span></dt><dd>cmip6_preprocessing/postprocessing/parse_metric</dd></dl></div><div class='xr-var-data'><table>\n",
+       "</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span>areacello</span></div><div class='xr-var-dims'>(y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>dask.array&lt;chunksize=(220, 256), meta=np.ndarray&gt;</div><input id='attrs-1814c4ad-7f97-4281-b045-30bbfc1c51e0' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-1814c4ad-7f97-4281-b045-30bbfc1c51e0' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-cecfb300-51a7-4c4c-ab1e-594e28e900bb' class='xr-var-data-in' type='checkbox'><label for='data-cecfb300-51a7-4c4c-ab1e-594e28e900bb' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>cell_methods :</span></dt><dd>area: sum</dd><dt><span>comment :</span></dt><dd>Horizontal area of ocean grid cells</dd><dt><span>history :</span></dt><dd>2019-09-02T13:08:47Z altered by CMOR: replaced missing value flag (-9e+33) and corresponding data with standard missing value (1e+20).</dd><dt><span>long_name :</span></dt><dd>Grid-Cell Area for Ocean Variables</dd><dt><span>original_name :</span></dt><dd>areacello</dd><dt><span>standard_name :</span></dt><dd>cell_area</dd><dt><span>units :</span></dt><dd>m2</dd><dt><span>original_key :</span></dt><dd>CMIP.MPI-M.MPI-ESM1-2-LR.historical.r2i1p1f1.Ofx.areacello.gn.gs://cmip6/CMIP6/CMIP/MPI-M/MPI-ESM1-2-LR/historical/r2i1p1f1/Ofx/areacello/gn/v20190710/.nan.20190710</dd><dt><span>parsed_with :</span></dt><dd>pymip/postprocessing/parse_metric</dd></dl></div><div class='xr-var-data'><table>\n",
        "<tr>\n",
        "<td>\n",
        "<table>\n",
@@ -9033,7 +9033,7 @@
        "</svg>\n",
        "</td>\n",
        "</tr>\n",
-       "</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span>thkcello</span></div><div class='xr-var-dims'>(time, lev, y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>dask.array&lt;chunksize=(66, 40, 220, 256), meta=np.ndarray&gt;</div><input id='attrs-04d27673-ef28-466d-91e9-b4d5d67ca252' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-04d27673-ef28-466d-91e9-b4d5d67ca252' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-4930ab36-4509-452d-9be4-c2f693b35440' class='xr-var-data-in' type='checkbox'><label for='data-4930ab36-4509-452d-9be4-c2f693b35440' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>cell_measures :</span></dt><dd>area: areacello volume: volcello</dd><dt><span>cell_methods :</span></dt><dd>area: mean where sea time: mean</dd><dt><span>comment :</span></dt><dd>&#x27;Thickness&#x27; means the vertical extent of a layer. &#x27;Cell&#x27; refers to a model grid-cell.</dd><dt><span>history :</span></dt><dd>2019-09-02T13:08:49Z altered by CMOR: replaced missing value flag (-9e+33) and corresponding data with standard missing value (1e+20).</dd><dt><span>long_name :</span></dt><dd>Ocean Model Cell Thickness</dd><dt><span>original_name :</span></dt><dd>thkcello</dd><dt><span>standard_name :</span></dt><dd>cell_thickness</dd><dt><span>units :</span></dt><dd>m</dd><dt><span>original_key :</span></dt><dd>CMIP.MPI-M.MPI-ESM1-2-LR.historical.r2i1p1f1.Omon.thkcello.gn.gs://cmip6/CMIP6/CMIP/MPI-M/MPI-ESM1-2-LR/historical/r2i1p1f1/Omon/thkcello/gn/v20190710/.nan.20190710</dd><dt><span>parsed_with :</span></dt><dd>cmip6_preprocessing/postprocessing/parse_metric</dd></dl></div><div class='xr-var-data'><table>\n",
+       "</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span>thkcello</span></div><div class='xr-var-dims'>(time, lev, y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>dask.array&lt;chunksize=(66, 40, 220, 256), meta=np.ndarray&gt;</div><input id='attrs-04d27673-ef28-466d-91e9-b4d5d67ca252' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-04d27673-ef28-466d-91e9-b4d5d67ca252' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-4930ab36-4509-452d-9be4-c2f693b35440' class='xr-var-data-in' type='checkbox'><label for='data-4930ab36-4509-452d-9be4-c2f693b35440' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>cell_measures :</span></dt><dd>area: areacello volume: volcello</dd><dt><span>cell_methods :</span></dt><dd>area: mean where sea time: mean</dd><dt><span>comment :</span></dt><dd>&#x27;Thickness&#x27; means the vertical extent of a layer. &#x27;Cell&#x27; refers to a model grid-cell.</dd><dt><span>history :</span></dt><dd>2019-09-02T13:08:49Z altered by CMOR: replaced missing value flag (-9e+33) and corresponding data with standard missing value (1e+20).</dd><dt><span>long_name :</span></dt><dd>Ocean Model Cell Thickness</dd><dt><span>original_name :</span></dt><dd>thkcello</dd><dt><span>standard_name :</span></dt><dd>cell_thickness</dd><dt><span>units :</span></dt><dd>m</dd><dt><span>original_key :</span></dt><dd>CMIP.MPI-M.MPI-ESM1-2-LR.historical.r2i1p1f1.Omon.thkcello.gn.gs://cmip6/CMIP6/CMIP/MPI-M/MPI-ESM1-2-LR/historical/r2i1p1f1/Omon/thkcello/gn/v20190710/.nan.20190710</dd><dt><span>parsed_with :</span></dt><dd>pymip/postprocessing/parse_metric</dd></dl></div><div class='xr-var-data'><table>\n",
        "<tr>\n",
        "<td>\n",
        "<table>\n",
@@ -9439,7 +9439,7 @@
      "name": "stderr",
      "output_type": "stream",
      "text": [
-      "/Users/juliusbusecke/code/cmip6_preprocessing/cmip6_preprocessing/preprocessing.py:267: UserWarning: `FGOALS-f3-L` does not provide lon or lat bounds.\n",
+      "/Users/juliusbusecke/code/pymip/pymip/preprocessing.py:267: UserWarning: `FGOALS-f3-L` does not provide lon or lat bounds.\n",
       "  warnings.warn(\"`FGOALS-f3-L` does not provide lon or lat bounds.\")\n"
      ]
     },
@@ -9476,9 +9476,9 @@
      "name": "stderr",
      "output_type": "stream",
      "text": [
-      "/Users/juliusbusecke/code/cmip6_preprocessing/cmip6_preprocessing/preprocessing.py:267: UserWarning: `FGOALS-f3-L` does not provide lon or lat bounds.\n",
+      "/Users/juliusbusecke/code/pymip/pymip/preprocessing.py:267: UserWarning: `FGOALS-f3-L` does not provide lon or lat bounds.\n",
       "  warnings.warn(\"`FGOALS-f3-L` does not provide lon or lat bounds.\")\n",
-      "/Users/juliusbusecke/code/cmip6_preprocessing/cmip6_preprocessing/preprocessing.py:267: UserWarning: `FGOALS-f3-L` does not provide lon or lat bounds.\n",
+      "/Users/juliusbusecke/code/pymip/pymip/preprocessing.py:267: UserWarning: `FGOALS-f3-L` does not provide lon or lat bounds.\n",
       "  warnings.warn(\"`FGOALS-f3-L` does not provide lon or lat bounds.\")\n"
      ]
     },
@@ -9495,7 +9495,7 @@
      "name": "stderr",
      "output_type": "stream",
      "text": [
-      "/Users/juliusbusecke/code/cmip6_preprocessing/cmip6_preprocessing/preprocessing.py:267: UserWarning: `FGOALS-f3-L` does not provide lon or lat bounds.\n",
+      "/Users/juliusbusecke/code/pymip/pymip/preprocessing.py:267: UserWarning: `FGOALS-f3-L` does not provide lon or lat bounds.\n",
       "  warnings.warn(\"`FGOALS-f3-L` does not provide lon or lat bounds.\")\n"
      ]
     },
@@ -10178,7 +10178,7 @@
        "</svg>\n",
        "</td>\n",
        "</tr>\n",
-       "</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>bnds</span></div><div class='xr-var-dims'>(bnds)</div><div class='xr-var-dtype'>int64</div><div class='xr-var-preview xr-preview'>0 1</div><input id='attrs-c5810d85-0b05-41c1-b686-aa078a65b3c7' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-c5810d85-0b05-41c1-b686-aa078a65b3c7' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-8eaddf82-ab5a-41af-806a-2bdd9f4ea5e9' class='xr-var-data-in' type='checkbox'><label for='data-8eaddf82-ab5a-41af-806a-2bdd9f4ea5e9' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([0, 1])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>areacello</span></div><div class='xr-var-dims'>(y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>dask.array&lt;chunksize=(218, 360), meta=np.ndarray&gt;</div><input id='attrs-b29bfb8b-96d6-4d07-830c-049b0b900dd5' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-b29bfb8b-96d6-4d07-830c-049b0b900dd5' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-8705a0cf-574f-4779-87c8-c2460f53223d' class='xr-var-data-in' type='checkbox'><label for='data-8705a0cf-574f-4779-87c8-c2460f53223d' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>cell_methods :</span></dt><dd>area: sum</dd><dt><span>comment :</span></dt><dd>Horizontal area of ocean grid cells</dd><dt><span>long_name :</span></dt><dd>Grid-Cell Area for Ocean Variables</dd><dt><span>standard_name :</span></dt><dd>cell_area</dd><dt><span>units :</span></dt><dd>m2</dd><dt><span>original_key :</span></dt><dd>CMIP.CAS.FGOALS-f3-L.historical.r1i1p1f1.Ofx.areacello.gn.gs://cmip6/CMIP6/CMIP/CAS/FGOALS-f3-L/historical/r1i1p1f1/Ofx/areacello/gn/v20190918/.nan.20190918</dd><dt><span>parsed_with :</span></dt><dd>cmip6_preprocessing/postprocessing/parse_metric</dd></dl></div><div class='xr-var-data'><table>\n",
+       "</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>bnds</span></div><div class='xr-var-dims'>(bnds)</div><div class='xr-var-dtype'>int64</div><div class='xr-var-preview xr-preview'>0 1</div><input id='attrs-c5810d85-0b05-41c1-b686-aa078a65b3c7' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-c5810d85-0b05-41c1-b686-aa078a65b3c7' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-8eaddf82-ab5a-41af-806a-2bdd9f4ea5e9' class='xr-var-data-in' type='checkbox'><label for='data-8eaddf82-ab5a-41af-806a-2bdd9f4ea5e9' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([0, 1])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>areacello</span></div><div class='xr-var-dims'>(y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>dask.array&lt;chunksize=(218, 360), meta=np.ndarray&gt;</div><input id='attrs-b29bfb8b-96d6-4d07-830c-049b0b900dd5' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-b29bfb8b-96d6-4d07-830c-049b0b900dd5' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-8705a0cf-574f-4779-87c8-c2460f53223d' class='xr-var-data-in' type='checkbox'><label for='data-8705a0cf-574f-4779-87c8-c2460f53223d' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>cell_methods :</span></dt><dd>area: sum</dd><dt><span>comment :</span></dt><dd>Horizontal area of ocean grid cells</dd><dt><span>long_name :</span></dt><dd>Grid-Cell Area for Ocean Variables</dd><dt><span>standard_name :</span></dt><dd>cell_area</dd><dt><span>units :</span></dt><dd>m2</dd><dt><span>original_key :</span></dt><dd>CMIP.CAS.FGOALS-f3-L.historical.r1i1p1f1.Ofx.areacello.gn.gs://cmip6/CMIP6/CMIP/CAS/FGOALS-f3-L/historical/r1i1p1f1/Ofx/areacello/gn/v20190918/.nan.20190918</dd><dt><span>parsed_with :</span></dt><dd>pymip/postprocessing/parse_metric</dd></dl></div><div class='xr-var-data'><table>\n",
        "<tr>\n",
        "<td>\n",
        "<table>\n",
@@ -10438,7 +10438,7 @@
        " 'standard_name': 'cell_area',\n",
        " 'units': 'm2',\n",
        " 'original_key': 'CMIP.CAS.FGOALS-f3-L.historical.r1i1p1f1.Ofx.areacello.gn.gs://cmip6/CMIP6/CMIP/CAS/FGOALS-f3-L/historical/r1i1p1f1/Ofx/areacello/gn/v20190918/.nan.20190918',\n",
-       " 'parsed_with': 'cmip6_preprocessing/postprocessing/parse_metric'}"
+       " 'parsed_with': 'pymip/postprocessing/parse_metric'}"
       ]
      },
      "execution_count": 26,
@@ -10474,7 +10474,7 @@
      "name": "stderr",
      "output_type": "stream",
      "text": [
-      "/Users/juliusbusecke/code/cmip6_preprocessing/cmip6_preprocessing/postprocessing.py:126: UserWarning: No matching metrics found for areacello\n",
+      "/Users/juliusbusecke/code/pymip/pymip/postprocessing.py:126: UserWarning: No matching metrics found for areacello\n",
       "  warnings.warn(f\"No matching metrics found for {mv}\")\n"
      ]
     },
@@ -11837,7 +11837,7 @@
        "</svg>\n",
        "</td>\n",
        "</tr>\n",
-       "</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>bnds</span></div><div class='xr-var-dims'>(bnds)</div><div class='xr-var-dtype'>int64</div><div class='xr-var-preview xr-preview'>0 1</div><input id='attrs-42620cc4-67c7-4f0d-95c1-65e549f88f0d' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-42620cc4-67c7-4f0d-95c1-65e549f88f0d' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-34406154-abff-4602-a37d-53ca597ca4da' class='xr-var-data-in' type='checkbox'><label for='data-34406154-abff-4602-a37d-53ca597ca4da' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([0, 1])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>areacello</span></div><div class='xr-var-dims'>(y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>dask.array&lt;chunksize=(218, 360), meta=np.ndarray&gt;</div><input id='attrs-cdda35db-0a9d-478f-b182-71bbe47d0a70' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-cdda35db-0a9d-478f-b182-71bbe47d0a70' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-edf71ab9-5b1b-40dc-afa2-3c283c0e56f6' class='xr-var-data-in' type='checkbox'><label for='data-edf71ab9-5b1b-40dc-afa2-3c283c0e56f6' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>cell_methods :</span></dt><dd>area: sum</dd><dt><span>comment :</span></dt><dd>Horizontal area of ocean grid cells</dd><dt><span>long_name :</span></dt><dd>Grid-Cell Area for Ocean Variables</dd><dt><span>standard_name :</span></dt><dd>cell_area</dd><dt><span>units :</span></dt><dd>m2</dd><dt><span>original_key :</span></dt><dd>CMIP.CAS.FGOALS-f3-L.historical.r1i1p1f1.Ofx.areacello.gn.gs://cmip6/CMIP6/CMIP/CAS/FGOALS-f3-L/historical/r1i1p1f1/Ofx/areacello/gn/v20190918/.nan.20190918</dd><dt><span>parsed_with :</span></dt><dd>cmip6_preprocessing/postprocessing/parse_metric</dd></dl></div><div class='xr-var-data'><table>\n",
+       "</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>bnds</span></div><div class='xr-var-dims'>(bnds)</div><div class='xr-var-dtype'>int64</div><div class='xr-var-preview xr-preview'>0 1</div><input id='attrs-42620cc4-67c7-4f0d-95c1-65e549f88f0d' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-42620cc4-67c7-4f0d-95c1-65e549f88f0d' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-34406154-abff-4602-a37d-53ca597ca4da' class='xr-var-data-in' type='checkbox'><label for='data-34406154-abff-4602-a37d-53ca597ca4da' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([0, 1])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>areacello</span></div><div class='xr-var-dims'>(y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>dask.array&lt;chunksize=(218, 360), meta=np.ndarray&gt;</div><input id='attrs-cdda35db-0a9d-478f-b182-71bbe47d0a70' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-cdda35db-0a9d-478f-b182-71bbe47d0a70' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-edf71ab9-5b1b-40dc-afa2-3c283c0e56f6' class='xr-var-data-in' type='checkbox'><label for='data-edf71ab9-5b1b-40dc-afa2-3c283c0e56f6' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>cell_methods :</span></dt><dd>area: sum</dd><dt><span>comment :</span></dt><dd>Horizontal area of ocean grid cells</dd><dt><span>long_name :</span></dt><dd>Grid-Cell Area for Ocean Variables</dd><dt><span>standard_name :</span></dt><dd>cell_area</dd><dt><span>units :</span></dt><dd>m2</dd><dt><span>original_key :</span></dt><dd>CMIP.CAS.FGOALS-f3-L.historical.r1i1p1f1.Ofx.areacello.gn.gs://cmip6/CMIP6/CMIP/CAS/FGOALS-f3-L/historical/r1i1p1f1/Ofx/areacello/gn/v20190918/.nan.20190918</dd><dt><span>parsed_with :</span></dt><dd>pymip/postprocessing/parse_metric</dd></dl></div><div class='xr-var-data'><table>\n",
        "<tr>\n",
        "<td>\n",
        "<table>\n",
@@ -12144,11 +12144,11 @@
      "name": "stderr",
      "output_type": "stream",
      "text": [
-      "/Users/juliusbusecke/code/cmip6_preprocessing/cmip6_preprocessing/preprocessing.py:267: UserWarning: `FGOALS-f3-L` does not provide lon or lat bounds.\n",
+      "/Users/juliusbusecke/code/pymip/pymip/preprocessing.py:267: UserWarning: `FGOALS-f3-L` does not provide lon or lat bounds.\n",
       "  warnings.warn(\"`FGOALS-f3-L` does not provide lon or lat bounds.\")\n",
-      "/Users/juliusbusecke/code/cmip6_preprocessing/cmip6_preprocessing/preprocessing.py:267: UserWarning: `FGOALS-f3-L` does not provide lon or lat bounds.\n",
+      "/Users/juliusbusecke/code/pymip/pymip/preprocessing.py:267: UserWarning: `FGOALS-f3-L` does not provide lon or lat bounds.\n",
       "  warnings.warn(\"`FGOALS-f3-L` does not provide lon or lat bounds.\")\n",
-      "/Users/juliusbusecke/code/cmip6_preprocessing/cmip6_preprocessing/preprocessing.py:267: UserWarning: `FGOALS-f3-L` does not provide lon or lat bounds.\n",
+      "/Users/juliusbusecke/code/pymip/pymip/preprocessing.py:267: UserWarning: `FGOALS-f3-L` does not provide lon or lat bounds.\n",
       "  warnings.warn(\"`FGOALS-f3-L` does not provide lon or lat bounds.\")\n"
      ]
     },
@@ -12204,7 +12204,7 @@
      "name": "stderr",
      "output_type": "stream",
      "text": [
-      "/Users/juliusbusecke/code/cmip6_preprocessing/cmip6_preprocessing/postprocessing.py:126: UserWarning: No matching metrics found for areacello\n",
+      "/Users/juliusbusecke/code/pymip/pymip/postprocessing.py:126: UserWarning: No matching metrics found for areacello\n",
       "  warnings.warn(f\"No matching metrics found for {mv}\")\n"
      ]
     }
diff --git a/docs/regionmask.ipynb b/docs/regionmask.ipynb
index c28eaa0b..fb25aebd 100644
--- a/docs/regionmask.ipynb
+++ b/docs/regionmask.ipynb
@@ -5,13 +5,13 @@
    "metadata": {},
    "source": [
     "# Masking out ocean basins\n",
-    "[cmip6_preprocessing](https://github.com/jbusecke/cmip6_preprocessing) is able to use and aggregate regionmask provided by [Natural Earth](http://www.naturalearthdata.com/) via the [regionmask package](https://github.com/mathause/regionmask).\n",
+    "[pymip](https://github.com/jbusecke/pymip) is able to use and aggregate regionmask provided by [Natural Earth](http://www.naturalearthdata.com/) via the [regionmask package](https://github.com/mathause/regionmask).\n",
     "\n",
     "This functionality needs the upstream master of regionmask:\n",
     "> In a cell do `!pip install git+https://github.com/mathause/regionmask.git` and restart the notebook\n",
     "\n",
-    "Also, [cmip6_preprocessing](https://github.com/jbusecke/cmip6_preprocessing) is currently not installed by default: \n",
-    "> In a cell do `!pip install git+https://github.com/jbusecke/cmip6_preprocessing.git` and restart the notebook"
+    "Also, [pymip](https://github.com/jbusecke/pymip) is currently not installed by default: \n",
+    "> In a cell do `!pip install git+https://github.com/jbusecke/pymip.git` and restart the notebook"
    ]
   },
   {
@@ -86,7 +86,7 @@
     "import regionmask\n",
     "import intake\n",
     "import matplotlib.pyplot as plt\n",
-    "from cmip6_preprocessing.preprocessing import combined_preprocessing\n",
+    "from pymip.preprocessing import combined_preprocessing\n",
     "import xarray as xr\n",
     "import numpy as np"
    ]
@@ -195,7 +195,7 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "from cmip6_preprocessing.regionmask import merged_mask"
+    "from pymip.regionmask import merged_mask"
    ]
   },
   {
diff --git a/docs/tutorial.ipynb b/docs/tutorial.ipynb
index c1127781..6c757860 100644
--- a/docs/tutorial.ipynb
+++ b/docs/tutorial.ipynb
@@ -49,7 +49,7 @@
    "source": [
     "<a id=\"rename\"></a>\n",
     "## Inconsistent naming of dimensions and coordinates\n",
-    "All cmip6 models (except for the unstructured grid of the AWI model) have in principal the same datastructure and **should** have a consistent naming, such that the user can test an analysis on one model and then seamlessly apply it on another. In practice some models have alternate naming for e.g. the logical (x,y,z) dimensions. `cmip6_preprocessing.preprocessing.rename_cmip6` accesses an internal dictionary to rename all models consistently to the following scheme:\n",
+    "All cmip6 models (except for the unstructured grid of the AWI model) have in principal the same datastructure and **should** have a consistent naming, such that the user can test an analysis on one model and then seamlessly apply it on another. In practice some models have alternate naming for e.g. the logical (x,y,z) dimensions. `pymip.preprocessing.rename_cmip6` accesses an internal dictionary to rename all models consistently to the following scheme:\n",
     "\n",
     "- `x`, `y`,`lev` for the logical grid index in the x,y,z direction\n",
     "- `lon`, `lat` for geographical position coordinates\n",
@@ -204,7 +204,7 @@
     }
    ],
    "source": [
-    "from cmip6_preprocessing.preprocessing import rename_cmip6\n",
+    "from pymip.preprocessing import rename_cmip6\n",
     "\n",
     "# load a few models to illustrate the problem\n",
     "cat = col.search(**query)\n",
@@ -2114,7 +2114,7 @@
     }
    ],
    "source": [
-    "from cmip6_preprocessing.preprocessing import promote_empty_dims, broadcast_lonlat, replace_x_y_nominal_lat_lon\n",
+    "from pymip.preprocessing import promote_empty_dims, broadcast_lonlat, replace_x_y_nominal_lat_lon\n",
     "\n",
     "# check out the previous datasets\n",
     "ds = dset_dict_renamed['CMIP.IPSL.IPSL-CM6A-LR.piControl.Oyr.gn']\n",
@@ -4707,7 +4707,7 @@
      "name": "stderr",
      "output_type": "stream",
      "text": [
-      "/Users/juliusbusecke/miniconda/envs/cmip6_preprocessing_docs/lib/python3.9/site-packages/xarray/core/indexing.py:1369: PerformanceWarning: Slicing is producing a large chunk. To accept the large\n",
+      "/Users/juliusbusecke/miniconda/envs/pymip_docs/lib/python3.9/site-packages/xarray/core/indexing.py:1369: PerformanceWarning: Slicing is producing a large chunk. To accept the large\n",
       "chunk and silence this warning, set the option\n",
       "    >>> with dask.config.set(**{'array.slicing.split_large_chunks': False}):\n",
       "    ...     array[indexer]\n",
@@ -4863,7 +4863,7 @@
      "name": "stderr",
      "output_type": "stream",
      "text": [
-      "/Users/juliusbusecke/miniconda/envs/cmip6_preprocessing_docs/lib/python3.9/site-packages/dask/array/core.py:4241: PerformanceWarning: Increasing number of chunks by factor of 60\n",
+      "/Users/juliusbusecke/miniconda/envs/pymip_docs/lib/python3.9/site-packages/dask/array/core.py:4241: PerformanceWarning: Increasing number of chunks by factor of 60\n",
       "  result = blockwise(\n"
      ]
     }
@@ -4974,13 +4974,13 @@
      "name": "stderr",
      "output_type": "stream",
      "text": [
-      "/Users/juliusbusecke/miniconda/envs/cmip6_preprocessing_docs/lib/python3.9/site-packages/dask/array/core.py:4241: PerformanceWarning: Increasing number of chunks by factor of 60\n",
+      "/Users/juliusbusecke/miniconda/envs/pymip_docs/lib/python3.9/site-packages/dask/array/core.py:4241: PerformanceWarning: Increasing number of chunks by factor of 60\n",
       "  result = blockwise(\n"
      ]
     }
    ],
    "source": [
-    "from cmip6_preprocessing.preprocessing import correct_lon\n",
+    "from pymip.preprocessing import correct_lon\n",
     "\n",
     "# same as above\n",
     "def wrapper(ds):\n",
@@ -5126,7 +5126,7 @@
     }
    ],
    "source": [
-    "from cmip6_preprocessing.preprocessing import correct_units\n",
+    "from pymip.preprocessing import correct_units\n",
     "query = dict(experiment_id = ['historical'],variable_id='thetao', grid_label=['gn'],source_id=['CESM2', 'CanESM5'], member_id='r1i1p1f1',\n",
     "             )\n",
     "cat = col.search(**query)\n",
@@ -5254,7 +5254,7 @@
     "## Consistent CF bounds\n",
     "Many of the CMIP6 models come with 'bound' dataarrays, that describe the extent of the finite grid cells.\n",
     "For the longitude and latitude there are two conventions: 2-element 'bounds' (describing the width of a cell along the center) and 4 element 'verticies' (describing the 4 corner coordinates of the cell).\n",
-    "`cmip6_preprocessing` automatically renames these variables consistently and converts them so that every dataset has both conventions available.\n"
+    "`pymip` automatically renames these variables consistently and converts them so that every dataset has both conventions available.\n"
    ]
   },
   {
@@ -5275,7 +5275,7 @@
      "name": "stderr",
      "output_type": "stream",
      "text": [
-      "/Users/juliusbusecke/miniconda/envs/cmip6_preprocessing_docs/lib/python3.9/site-packages/xarray/core/indexing.py:1369: PerformanceWarning: Slicing is producing a large chunk. To accept the large\n",
+      "/Users/juliusbusecke/miniconda/envs/pymip_docs/lib/python3.9/site-packages/xarray/core/indexing.py:1369: PerformanceWarning: Slicing is producing a large chunk. To accept the large\n",
       "chunk and silence this warning, set the option\n",
       "    >>> with dask.config.set(**{'array.slicing.split_large_chunks': False}):\n",
       "    ...     array[indexer]\n",
@@ -5284,7 +5284,7 @@
       "    >>> with dask.config.set(**{'array.slicing.split_large_chunks': True}):\n",
       "    ...     array[indexer]\n",
       "  return self.array[key]\n",
-      "/Users/juliusbusecke/miniconda/envs/cmip6_preprocessing_docs/lib/python3.9/site-packages/xarray/core/indexing.py:1369: PerformanceWarning: Slicing is producing a large chunk. To accept the large\n",
+      "/Users/juliusbusecke/miniconda/envs/pymip_docs/lib/python3.9/site-packages/xarray/core/indexing.py:1369: PerformanceWarning: Slicing is producing a large chunk. To accept the large\n",
       "chunk and silence this warning, set the option\n",
       "    >>> with dask.config.set(**{'array.slicing.split_large_chunks': False}):\n",
       "    ...     array[indexer]\n",
@@ -5328,7 +5328,7 @@
      "name": "stderr",
      "output_type": "stream",
      "text": [
-      "/Users/juliusbusecke/miniconda/envs/cmip6_preprocessing_docs/lib/python3.9/site-packages/xarray/core/indexing.py:1369: PerformanceWarning: Slicing is producing a large chunk. To accept the large\n",
+      "/Users/juliusbusecke/miniconda/envs/pymip_docs/lib/python3.9/site-packages/xarray/core/indexing.py:1369: PerformanceWarning: Slicing is producing a large chunk. To accept the large\n",
       "chunk and silence this warning, set the option\n",
       "    >>> with dask.config.set(**{'array.slicing.split_large_chunks': False}):\n",
       "    ...     array[indexer]\n",
@@ -5341,7 +5341,7 @@
     }
    ],
    "source": [
-    "from cmip6_preprocessing.preprocessing import correct_coordinates,parse_lon_lat_bounds, maybe_convert_bounds_to_vertex, maybe_convert_vertex_to_bounds\n",
+    "from pymip.preprocessing import correct_coordinates,parse_lon_lat_bounds, maybe_convert_bounds_to_vertex, maybe_convert_vertex_to_bounds\n",
     "\n",
     "# same as above\n",
     "def wrapper(ds):\n",
@@ -5545,7 +5545,7 @@
     "## TL;DR How to put it all together\n",
     "\n",
     "To combine all these (or just some you like), you can create a wrapper function as above, or you can use the provided `combined_preprocessing`, which does all the above.\n",
-    "> Due to concerns regarding the [dask performance of large datasets](https://github.com/jbusecke/cmip6_preprocessing/issues/94), the latest version of `combined_preprocessing` does not apply `replace_x_y_nominal_lat_lon` anymore. You can still apply this at a later point, preferrably at the end of a processing step, to enable rough selection of regions (see example below)."
+    "> Due to concerns regarding the [dask performance of large datasets](https://github.com/jbusecke/pymip/issues/94), the latest version of `combined_preprocessing` does not apply `replace_x_y_nominal_lat_lon` anymore. You can still apply this at a later point, preferrably at the end of a processing step, to enable rough selection of regions (see example below)."
    ]
   },
   {
@@ -5596,7 +5596,7 @@
     }
    ],
    "source": [
-    "from cmip6_preprocessing.preprocessing import combined_preprocessing\n",
+    "from pymip.preprocessing import combined_preprocessing\n",
     "\n",
     "# lets load a bunch more models this time\n",
     "query = dict(experiment_id=['piControl', 'historical'],\n",
@@ -5665,15 +5665,15 @@
    "metadata": {},
    "source": [
     "## Appeal\n",
-    "**`cmip6_preprocessing` is still under very active development, and its true strength will be to 'crowdsource' fixes for common problems. If you notice errors, please try to isolate them by applying the single untility functions and then raise an issue on [github](https://github.com/jbusecke/cmip6_preprocessing/issues)**"
+    "**`pymip` is still under very active development, and its true strength will be to 'crowdsource' fixes for common problems. If you notice errors, please try to isolate them by applying the single untility functions and then raise an issue on [github](https://github.com/jbusecke/pymip/issues)**"
    ]
   }
  ],
  "metadata": {
   "kernelspec": {
-   "display_name": "Python [conda env:cmip6_preprocessing_docs]",
+   "display_name": "Python [conda env:pymip_docs]",
    "language": "python",
-   "name": "conda-env-cmip6_preprocessing_docs-py"
+   "name": "conda-env-pymip_docs-py"
   },
   "language_info": {
    "codemirror_mode": {
diff --git a/docs/whats-new.rst b/docs/whats-new.rst
index 69a067d4..b7a9b2da 100644
--- a/docs/whats-new.rst
+++ b/docs/whats-new.rst
@@ -1,4 +1,4 @@
-.. currentmodule:: cmip6_preprocessing
+.. currentmodule:: pymip
 
 What's New
 ===========
@@ -15,7 +15,7 @@ New Features
 Breaking Changes
 ~~~~~~~~~~~~~~~~
 - Requires xarray>=0.17.0 and drops support for python 3.6 (:pull:`170`, :pull:`173`). By `Julius Busecke <https://github.com/jbusecke>`_
-- :py:func:`~cmip6_preprocessing.utils.cmip6_dataset_id` not includes the attribute `variable_id` (:pull:`166`) By `Julius Busecke <https://github.com/jbusecke>`_
+- :py:func:`~pymip.utils.cmip6_dataset_id` not includes the attribute `variable_id` (:pull:`166`) By `Julius Busecke <https://github.com/jbusecke>`_
 
 Internal Changes
 ~~~~~~~~~~~~~~~~
@@ -25,13 +25,13 @@ By `Tom Nicholas <https://github.com/TomNicholas>`_ and `Julius Busecke <https:/
 
 Bugfixes
 ~~~~~~~~
-- :py:func:`~cmip6_preprocessing.postprocessing.match_metrics` now accepts single variables as str input (:issue:`229`, :pull:`245`)
+- :py:func:`~pymip.postprocessing.match_metrics` now accepts single variables as str input (:issue:`229`, :pull:`245`)
 
-- :py:func:`~cmip6_preprocessing.postprocessing.concat_members` now returns a dataset with labelled `member_id` dimension (:issue:`196` , :pull:`197`). By `Julius Busecke <https://github.com/jbusecke>`_
+- :py:func:`~pymip.postprocessing.concat_members` now returns a dataset with labelled `member_id` dimension (:issue:`196` , :pull:`197`). By `Julius Busecke <https://github.com/jbusecke>`_
 
 - Fixes incompatibility with upstream changes in xarray>=0.19.0 (:issue:`173`, :pull:`174`). By `Julius Busecke <https://github.com/jbusecke>`_
 
-- :py:func:`~cmip6_preprocessing.drift_removal.match_and_remove_drift` does now work with chunked (dask powered) datasets (:pull:`164`).By `Julius Busecke <https://github.com/jbusecke>`_
+- :py:func:`~pymip.drift_removal.match_and_remove_drift` does now work with chunked (dask powered) datasets (:pull:`164`).By `Julius Busecke <https://github.com/jbusecke>`_
 
 Internal Changes
 ~~~~~~~~~~~~~~~~
@@ -47,10 +47,10 @@ v0.5.0 (2021/7/9)
 
 New Features
 ~~~~~~~~~~~~
-- :py:func:`~cmip6_preprocessing.postprocessing.interpolate_grid_labels` enables batch combination of different grid_labels
+- :py:func:`~pymip.postprocessing.interpolate_grid_labels` enables batch combination of different grid_labels
 (e.g. from native to regridded and vice versa) using xesmf (:pull:`161`). By `Julius Busecke <https://github.com/jbusecke>`_
 
-- :py:func:`~cmip6_preprocessing.drift_removal.match_and_remove_drift` enables batch detrending/drift-drift_removal
+- :py:func:`~pymip.drift_removal.match_and_remove_drift` enables batch detrending/drift-drift_removal
 from a dictionary of datasets (:pull:`155`). By `Julius Busecke <https://github.com/jbusecke>`_
 
 .. _whats-new.0.4.0:
diff --git a/notebooks/add_more_models.ipynb b/notebooks/add_more_models.ipynb
index 42e52a52..900e8792 100644
--- a/notebooks/add_more_models.ipynb
+++ b/notebooks/add_more_models.ipynb
@@ -13,7 +13,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "> IMPORTANT: Install `cmip6_preprocessing` from source, so that the dict is updated as you go."
+    "> IMPORTANT: Install `pymip` from source, so that the dict is updated as you go."
    ]
   },
   {
@@ -36,7 +36,7 @@
     "import intake\n",
     "import pandas as pd\n",
     "import xarray as xr\n",
-    "from cmip6_preprocessing.preprocessing import cmip6_renaming_dict"
+    "from pymip.preprocessing import cmip6_renaming_dict"
    ]
   },
   {
@@ -173,8 +173,8 @@
      "traceback": [
       "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
       "\u001b[0;31mKeyError\u001b[0m                                  Traceback (most recent call last)",
-      "\u001b[0;32m<ipython-input-23-ed16df0f73c2>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      8\u001b[0m \u001b[0mavailable_models\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcat\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdf\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'source_id'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0munique\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      9\u001b[0m \u001b[0;31m# find available models in cmip6_preprocessing\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 10\u001b[0;31m \u001b[0mmodels\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mk\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mk\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mcmip6_renaming_dict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mkeys\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     11\u001b[0m \u001b[0;31m# find missing models\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     12\u001b[0m \u001b[0mmissing_models\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mm\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mm\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mavailable_models\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mm\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mmodels\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
-      "\u001b[0;32m~/cmip6_preprocessing/cmip6_preprocessing/preprocessing.py\u001b[0m in \u001b[0;36mcmip6_renaming_dict\u001b[0;34m()\u001b[0m\n\u001b[1;32m    681\u001b[0m     \u001b[0;31m# add 'lon' and 'lat' as possible logical indicies for all models. This should take care of all regridded ocean output and all atmosphere models.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    682\u001b[0m     \u001b[0;32mfor\u001b[0m \u001b[0mmodel\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mdim_name_dict\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mkeys\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 683\u001b[0;31m         \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34m'lon'\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mdim_name_dict\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'x'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    684\u001b[0m             \u001b[0mdim_name_dict\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'x'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'lon'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    685\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34m'lat'\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mdim_name_dict\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'y'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+      "\u001b[0;32m<ipython-input-23-ed16df0f73c2>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      8\u001b[0m \u001b[0mavailable_models\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcat\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdf\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'source_id'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0munique\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      9\u001b[0m \u001b[0;31m# find available models in pymip\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 10\u001b[0;31m \u001b[0mmodels\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mk\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mk\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mcmip6_renaming_dict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mkeys\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     11\u001b[0m \u001b[0;31m# find missing models\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     12\u001b[0m \u001b[0mmissing_models\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mm\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mm\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mavailable_models\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mm\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mmodels\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+      "\u001b[0;32m~/pymip/pymip/preprocessing.py\u001b[0m in \u001b[0;36mcmip6_renaming_dict\u001b[0;34m()\u001b[0m\n\u001b[1;32m    681\u001b[0m     \u001b[0;31m# add 'lon' and 'lat' as possible logical indicies for all models. This should take care of all regridded ocean output and all atmosphere models.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    682\u001b[0m     \u001b[0;32mfor\u001b[0m \u001b[0mmodel\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mdim_name_dict\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mkeys\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 683\u001b[0;31m         \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34m'lon'\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mdim_name_dict\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'x'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    684\u001b[0m             \u001b[0mdim_name_dict\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'x'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'lon'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    685\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34m'lat'\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mdim_name_dict\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'y'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
       "\u001b[0;31mKeyError\u001b[0m: 'x'"
      ]
     }
@@ -188,7 +188,7 @@
     "\n",
     "# find unique source_ids\n",
     "available_models = cat.df['source_id'].unique()\n",
-    "# find available models in cmip6_preprocessing\n",
+    "# find available models in pymip\n",
     "models = [k for k in cmip6_renaming_dict().keys()]\n",
     "# find missing models\n",
     "missing_models = [m for m in available_models if m not in models]\n",
@@ -313,7 +313,7 @@
      "name": "stderr",
      "output_type": "stream",
      "text": [
-      "[autoreload of cmip6_preprocessing.preprocessing failed: Traceback (most recent call last):\n",
+      "[autoreload of pymip.preprocessing failed: Traceback (most recent call last):\n",
       "  File \"/srv/conda/envs/notebook/lib/python3.7/site-packages/IPython/extensions/autoreload.py\", line 245, in check\n",
       "    superreload(m, reload, self.old_objects)\n",
       "  File \"/srv/conda/envs/notebook/lib/python3.7/site-packages/IPython/extensions/autoreload.py\", line 394, in superreload\n",
@@ -327,7 +327,7 @@
       "  File \"<frozen importlib._bootstrap_external>\", line 860, in get_code\n",
       "  File \"<frozen importlib._bootstrap_external>\", line 791, in source_to_code\n",
       "  File \"<frozen importlib._bootstrap>\", line 219, in _call_with_frames_removed\n",
-      "  File \"/home/jovyan/cmip6_preprocessing/cmip6_preprocessing/preprocessing.py\", line 684\n",
+      "  File \"/home/jovyan/pymip/pymip/preprocessing.py\", line 684\n",
       "    for\n",
       "    ^\n",
       "IndentationError: expected an indented block\n",
@@ -3704,7 +3704,7 @@
     }
    ],
    "source": [
-    "from cmip6_preprocessing.preprocessing import combined_preprocessing\n",
+    "from pymip.preprocessing import combined_preprocessing\n",
     "# currently cmip6_pp cant deal with 2d (depth, lat ) variables...should\n",
     "# be fixed\n",
     "\n",
diff --git a/notebooks/maintenance_grids.ipynb b/notebooks/maintenance_grids.ipynb
index 1aba6adb..8b4af166 100644
--- a/notebooks/maintenance_grids.ipynb
+++ b/notebooks/maintenance_grids.ipynb
@@ -20,7 +20,7 @@
    "outputs": [],
    "source": [
     "# ! pip install git+https://github.com/NCAR/intake-esm.git\n",
-    "# ! pip install git+https://github.com/jbusecke/cmip6_preprocessing.git"
+    "# ! pip install git+https://github.com/jbusecke/pymip.git"
    ]
   },
   {
@@ -40,8 +40,8 @@
     }
    ],
    "source": [
-    "import cmip6_preprocessing\n",
-    "cmip6_preprocessing.__version__"
+    "import pymip\n",
+    "pymip.__version__"
    ]
   },
   {
@@ -55,8 +55,8 @@
     "import intake\n",
     "import pandas as pd\n",
     "import xarray as xr\n",
-    "from cmip6_preprocessing.grids import detect_shift\n",
-    "from cmip6_preprocessing.preprocessing import combined_preprocessing"
+    "from pymip.grids import detect_shift\n",
+    "from pymip.preprocessing import combined_preprocessing"
    ]
   },
   {
@@ -77,7 +77,7 @@
     "# url = \"https://raw.githubusercontent.com/NCAR/intake-esm-datastore/master/catalogs/pangeo-cmip6.json\"\n",
     "# col = intake.open_esm_datastore(url)\n",
     "\n",
-    "from cmip6_preprocessing.utils import google_cmip_col\n",
+    "from pymip.utils import google_cmip_col\n",
     "col = google_cmip_col()"
    ]
   },
@@ -623,7 +623,7 @@
       "    >>> with dask.config.set(**{'array.slicing.split_large_chunks': True}):\n",
       "    ...     array[indexer]\n",
       "  return self.array[key]\n",
-      "/home/jovyan/cmip6_preprocessing/cmip6_preprocessing/preprocessing.py:254: UserWarning: `FGOALS-f3-L` does not provide lon or lat bounds.\n",
+      "/home/jovyan/pymip/pymip/preprocessing.py:254: UserWarning: `FGOALS-f3-L` does not provide lon or lat bounds.\n",
       "  warnings.warn(\"`FGOALS-f3-L` does not provide lon or lat bounds.\")\n",
       "/srv/conda/envs/notebook/lib/python3.8/site-packages/xarray/core/indexing.py:1369: PerformanceWarning: Slicing is producing a large chunk. To accept the large\n",
       "chunk and silence this warning, set the option\n",
@@ -1266,7 +1266,7 @@
       "    >>> with dask.config.set(**{'array.slicing.split_large_chunks': True}):\n",
       "    ...     array[indexer]\n",
       "  return self.array[key]\n",
-      "/home/jovyan/cmip6_preprocessing/cmip6_preprocessing/preprocessing.py:254: UserWarning: `FGOALS-f3-L` does not provide lon or lat bounds.\n",
+      "/home/jovyan/pymip/pymip/preprocessing.py:254: UserWarning: `FGOALS-f3-L` does not provide lon or lat bounds.\n",
       "  warnings.warn(\"`FGOALS-f3-L` does not provide lon or lat bounds.\")\n",
       "/srv/conda/envs/notebook/lib/python3.8/site-packages/xarray/core/indexing.py:1369: PerformanceWarning: Slicing is producing a large chunk. To accept the large\n",
       "chunk and silence this warning, set the option\n",
@@ -1574,7 +1574,7 @@
       "    >>> with dask.config.set(**{'array.slicing.split_large_chunks': True}):\n",
       "    ...     array[indexer]\n",
       "  return self.array[key]\n",
-      "/home/jovyan/cmip6_preprocessing/cmip6_preprocessing/preprocessing.py:273: UserWarning: Found time as dimension in `lon_bounds`. Assuming this is an error and just picking the first step along that dimension.\n",
+      "/home/jovyan/pymip/pymip/preprocessing.py:273: UserWarning: Found time as dimension in `lon_bounds`. Assuming this is an error and just picking the first step along that dimension.\n",
       "  warnings.warn(\n",
       "/srv/conda/envs/notebook/lib/python3.8/site-packages/xarray/core/indexing.py:1369: PerformanceWarning: Slicing is producing a large chunk. To accept the large\n",
       "chunk and silence this warning, set the option\n",
@@ -1920,7 +1920,7 @@
       "    >>> with dask.config.set(**{'array.slicing.split_large_chunks': True}):\n",
       "    ...     array[indexer]\n",
       "  return self.array[key]\n",
-      "/home/jovyan/cmip6_preprocessing/cmip6_preprocessing/preprocessing.py:254: UserWarning: `FGOALS-f3-L` does not provide lon or lat bounds.\n",
+      "/home/jovyan/pymip/pymip/preprocessing.py:254: UserWarning: `FGOALS-f3-L` does not provide lon or lat bounds.\n",
       "  warnings.warn(\"`FGOALS-f3-L` does not provide lon or lat bounds.\")\n",
       "/srv/conda/envs/notebook/lib/python3.8/site-packages/xarray/core/indexing.py:1369: PerformanceWarning: Slicing is producing a large chunk. To accept the large\n",
       "chunk and silence this warning, set the option\n",
@@ -2228,7 +2228,7 @@
       "    >>> with dask.config.set(**{'array.slicing.split_large_chunks': True}):\n",
       "    ...     array[indexer]\n",
       "  return self.array[key]\n",
-      "/home/jovyan/cmip6_preprocessing/cmip6_preprocessing/preprocessing.py:273: UserWarning: Found time as dimension in `lon_bounds`. Assuming this is an error and just picking the first step along that dimension.\n",
+      "/home/jovyan/pymip/pymip/preprocessing.py:273: UserWarning: Found time as dimension in `lon_bounds`. Assuming this is an error and just picking the first step along that dimension.\n",
       "  warnings.warn(\n",
       "/srv/conda/envs/notebook/lib/python3.8/site-packages/xarray/core/indexing.py:1369: PerformanceWarning: Slicing is producing a large chunk. To accept the large\n",
       "chunk and silence this warning, set the option\n",
@@ -2498,7 +2498,7 @@
    "outputs": [],
    "source": [
     "import yaml\n",
-    "ff = open('/home/jovyan/cmip6_preprocessing/cmip6_preprocessing/specs/staggered_grid_config.yaml', \"r\")\n",
+    "ff = open('/home/jovyan/pymip/pymip/specs/staggered_grid_config.yaml', \"r\")\n",
     "grid_dict = yaml.safe_load(ff)\n",
     "ff.close()"
    ]
diff --git a/notebooks/metric_parse_improvement.ipynb b/notebooks/metric_parse_improvement.ipynb
index 8fd9da47..3e9ea4bc 100644
--- a/notebooks/metric_parse_improvement.ipynb
+++ b/notebooks/metric_parse_improvement.ipynb
@@ -6,7 +6,7 @@
    "source": [
     "## this should go to the docs/test for metric module)\n",
     "\n",
-    "See [this](https://github.com/jbusecke/cmip6_preprocessing/issues/17) issue for details. "
+    "See [this](https://github.com/jbusecke/pymip/issues/17) issue for details. "
    ]
   },
   {
@@ -61,7 +61,7 @@
      "name": "stderr",
      "output_type": "stream",
      "text": [
-      "/home/jovyan/cmip6_preprocessing/cmip6_preprocessing/parse_static_metrics.py:43: UserWarning: No area detected for source id: `AWI-CM-1-1-MR`\n",
+      "/home/jovyan/pymip/pymip/parse_static_metrics.py:43: UserWarning: No area detected for source id: `AWI-CM-1-1-MR`\n",
       "  warnings.warn('No area detected for source id: `%s`' %source_id)\n"
      ]
     },
@@ -94,9 +94,9 @@
      "name": "stderr",
      "output_type": "stream",
      "text": [
-      "/home/jovyan/cmip6_preprocessing/cmip6_preprocessing/parse_static_metrics.py:43: UserWarning: No area detected for source id: `E3SM-1-1`\n",
+      "/home/jovyan/pymip/pymip/parse_static_metrics.py:43: UserWarning: No area detected for source id: `E3SM-1-1`\n",
       "  warnings.warn('No area detected for source id: `%s`' %source_id)\n",
-      "/home/jovyan/cmip6_preprocessing/cmip6_preprocessing/parse_static_metrics.py:43: UserWarning: No area detected for source id: `NICAM16-7S`\n",
+      "/home/jovyan/pymip/pymip/parse_static_metrics.py:43: UserWarning: No area detected for source id: `NICAM16-7S`\n",
       "  warnings.warn('No area detected for source id: `%s`' %source_id)\n"
      ]
     },
@@ -123,7 +123,7 @@
      "name": "stderr",
      "output_type": "stream",
      "text": [
-      "/home/jovyan/cmip6_preprocessing/cmip6_preprocessing/parse_static_metrics.py:43: UserWarning: No area detected for source id: `INM-CM4-8`\n",
+      "/home/jovyan/pymip/pymip/parse_static_metrics.py:43: UserWarning: No area detected for source id: `INM-CM4-8`\n",
       "  warnings.warn('No area detected for source id: `%s`' %source_id)\n"
      ]
     },
@@ -143,13 +143,13 @@
      "name": "stderr",
      "output_type": "stream",
      "text": [
-      "/home/jovyan/cmip6_preprocessing/cmip6_preprocessing/parse_static_metrics.py:43: UserWarning: No area detected for source id: `GISS-E2-2-G`\n",
+      "/home/jovyan/pymip/pymip/parse_static_metrics.py:43: UserWarning: No area detected for source id: `GISS-E2-2-G`\n",
       "  warnings.warn('No area detected for source id: `%s`' %source_id)\n",
-      "/home/jovyan/cmip6_preprocessing/cmip6_preprocessing/parse_static_metrics.py:43: UserWarning: No area detected for source id: `INM-CM5-0`\n",
+      "/home/jovyan/pymip/pymip/parse_static_metrics.py:43: UserWarning: No area detected for source id: `INM-CM5-0`\n",
       "  warnings.warn('No area detected for source id: `%s`' %source_id)\n",
-      "/home/jovyan/cmip6_preprocessing/cmip6_preprocessing/parse_static_metrics.py:43: UserWarning: No area detected for source id: `E3SM-1-0`\n",
+      "/home/jovyan/pymip/pymip/parse_static_metrics.py:43: UserWarning: No area detected for source id: `E3SM-1-0`\n",
       "  warnings.warn('No area detected for source id: `%s`' %source_id)\n",
-      "/home/jovyan/cmip6_preprocessing/cmip6_preprocessing/parse_static_metrics.py:43: UserWarning: No area detected for source id: `E3SM-1-1-ECA`\n",
+      "/home/jovyan/pymip/pymip/parse_static_metrics.py:43: UserWarning: No area detected for source id: `E3SM-1-1-ECA`\n",
       "  warnings.warn('No area detected for source id: `%s`' %source_id)\n"
      ]
     },
@@ -176,9 +176,9 @@
      "name": "stderr",
      "output_type": "stream",
      "text": [
-      "/home/jovyan/cmip6_preprocessing/cmip6_preprocessing/parse_static_metrics.py:43: UserWarning: No area detected for source id: `BCC-CSM2-MR`\n",
+      "/home/jovyan/pymip/pymip/parse_static_metrics.py:43: UserWarning: No area detected for source id: `BCC-CSM2-MR`\n",
       "  warnings.warn('No area detected for source id: `%s`' %source_id)\n",
-      "/home/jovyan/cmip6_preprocessing/cmip6_preprocessing/parse_static_metrics.py:43: UserWarning: No area detected for source id: `FGOALS-f3-L`\n",
+      "/home/jovyan/pymip/pymip/parse_static_metrics.py:43: UserWarning: No area detected for source id: `FGOALS-f3-L`\n",
       "  warnings.warn('No area detected for source id: `%s`' %source_id)\n"
      ]
     },
@@ -211,7 +211,7 @@
      "name": "stderr",
      "output_type": "stream",
      "text": [
-      "/home/jovyan/cmip6_preprocessing/cmip6_preprocessing/parse_static_metrics.py:43: UserWarning: No area detected for source id: `KACE-1-0-G`\n",
+      "/home/jovyan/pymip/pymip/parse_static_metrics.py:43: UserWarning: No area detected for source id: `KACE-1-0-G`\n",
       "  warnings.warn('No area detected for source id: `%s`' %source_id)\n"
      ]
     },
@@ -250,7 +250,7 @@
      "name": "stderr",
      "output_type": "stream",
      "text": [
-      "/home/jovyan/cmip6_preprocessing/cmip6_preprocessing/parse_static_metrics.py:43: UserWarning: No area detected for source id: `NESM3`\n",
+      "/home/jovyan/pymip/pymip/parse_static_metrics.py:43: UserWarning: No area detected for source id: `NESM3`\n",
       "  warnings.warn('No area detected for source id: `%s`' %source_id)\n"
      ]
     },
@@ -271,7 +271,7 @@
      "name": "stderr",
      "output_type": "stream",
      "text": [
-      "/home/jovyan/cmip6_preprocessing/cmip6_preprocessing/parse_static_metrics.py:43: UserWarning: No area detected for source id: `EC-Earth3-LR`\n",
+      "/home/jovyan/pymip/pymip/parse_static_metrics.py:43: UserWarning: No area detected for source id: `EC-Earth3-LR`\n",
       "  warnings.warn('No area detected for source id: `%s`' %source_id)\n"
      ]
     },
@@ -322,7 +322,7 @@
      "name": "stderr",
      "output_type": "stream",
      "text": [
-      "/home/jovyan/cmip6_preprocessing/cmip6_preprocessing/parse_static_metrics.py:43: UserWarning: No area detected for source id: `CIESM`\n",
+      "/home/jovyan/pymip/pymip/parse_static_metrics.py:43: UserWarning: No area detected for source id: `CIESM`\n",
       "  warnings.warn('No area detected for source id: `%s`' %source_id)\n"
      ]
     },
@@ -349,7 +349,7 @@
      "name": "stderr",
      "output_type": "stream",
      "text": [
-      "/home/jovyan/cmip6_preprocessing/cmip6_preprocessing/parse_static_metrics.py:43: UserWarning: No area detected for source id: `NorESM2-MM`\n",
+      "/home/jovyan/pymip/pymip/parse_static_metrics.py:43: UserWarning: No area detected for source id: `NorESM2-MM`\n",
       "  warnings.warn('No area detected for source id: `%s`' %source_id)\n"
      ]
     },
@@ -370,7 +370,7 @@
      "name": "stderr",
      "output_type": "stream",
      "text": [
-      "/home/jovyan/cmip6_preprocessing/cmip6_preprocessing/parse_static_metrics.py:43: UserWarning: No area detected for source id: `NorESM2-LM`\n",
+      "/home/jovyan/pymip/pymip/parse_static_metrics.py:43: UserWarning: No area detected for source id: `NorESM2-LM`\n",
       "  warnings.warn('No area detected for source id: `%s`' %source_id)\n"
      ]
     },
@@ -409,7 +409,7 @@
      "name": "stderr",
      "output_type": "stream",
      "text": [
-      "/home/jovyan/cmip6_preprocessing/cmip6_preprocessing/parse_static_metrics.py:43: UserWarning: No area detected for source id: `CESM1-1-CAM5-CMIP5`\n",
+      "/home/jovyan/pymip/pymip/parse_static_metrics.py:43: UserWarning: No area detected for source id: `CESM1-1-CAM5-CMIP5`\n",
       "  warnings.warn('No area detected for source id: `%s`' %source_id)\n"
      ]
     },
@@ -436,7 +436,7 @@
      "name": "stderr",
      "output_type": "stream",
      "text": [
-      "/home/jovyan/cmip6_preprocessing/cmip6_preprocessing/parse_static_metrics.py:43: UserWarning: No area detected for source id: `FIO-ESM-2-0`\n",
+      "/home/jovyan/pymip/pymip/parse_static_metrics.py:43: UserWarning: No area detected for source id: `FIO-ESM-2-0`\n",
       "  warnings.warn('No area detected for source id: `%s`' %source_id)\n"
      ]
     },
@@ -457,7 +457,7 @@
      "name": "stderr",
      "output_type": "stream",
      "text": [
-      "/home/jovyan/cmip6_preprocessing/cmip6_preprocessing/parse_static_metrics.py:43: UserWarning: No area detected for source id: `HadGEM3-GC31-MM`\n",
+      "/home/jovyan/pymip/pymip/parse_static_metrics.py:43: UserWarning: No area detected for source id: `HadGEM3-GC31-MM`\n",
       "  warnings.warn('No area detected for source id: `%s`' %source_id)\n"
      ]
     },
diff --git a/notebooks/parse_area_gn.ipynb b/notebooks/parse_area_gn.ipynb
index 9dcdc497..b7da7d5d 100644
--- a/notebooks/parse_area_gn.ipynb
+++ b/notebooks/parse_area_gn.ipynb
@@ -32,7 +32,7 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "from cmip6_preprocessing.parse_static_metrics import parse_metrics"
+    "from pymip.parse_static_metrics import parse_metrics"
    ]
   },
   {
@@ -299,8 +299,8 @@
       "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
       "\u001b[0;31mValueError\u001b[0m                                Traceback (most recent call last)",
       "\u001b[0;32m<ipython-input-11-78ff165b38cf>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      3\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mwarnings\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcatch_warnings\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# these lines just make sure that the warnings dont clutter your notebook\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      4\u001b[0m     \u001b[0mwarnings\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msimplefilter\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"ignore\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m     \u001b[0mdata_dict\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mread_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcol\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mquery\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
-      "\u001b[0;32m~/cmip6_preprocessing/cmip6_preprocessing/preprocessing.py\u001b[0m in \u001b[0;36mread_data\u001b[0;34m(col, preview, required_variable_id, **kwargs)\u001b[0m\n\u001b[1;32m     19\u001b[0m     \u001b[0;32mfor\u001b[0m \u001b[0mmodelname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mv_dict\u001b[0m \u001b[0;32min\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mv\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mk\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mv\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mdata_dict\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mk\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m'AWI-CM-1-1-MR'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     20\u001b[0m         \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmodelname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 21\u001b[0;31m         \u001b[0mdata_final\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mmodelname\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfull_preprocessing\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mv_dict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmodelname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mplot\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     22\u001b[0m     \u001b[0;32mreturn\u001b[0m \u001b[0mdata_final\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     23\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
-      "\u001b[0;32m~/cmip6_preprocessing/cmip6_preprocessing/preprocessing.py\u001b[0m in \u001b[0;36mfull_preprocessing\u001b[0;34m(dat_dict, modelname, tracer_ref, u_ref, v_ref, plot, verbose)\u001b[0m\n\u001b[1;32m    103\u001b[0m         \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    104\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 105\u001b[0;31m     \u001b[0mgrid_temp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mGrid\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    106\u001b[0m     \u001b[0mds\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrecreate_metrics\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mds\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mgrid_temp\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    107\u001b[0m     \u001b[0;32mreturn\u001b[0m \u001b[0mds\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
+      "\u001b[0;32m~/pymip/pymip/preprocessing.py\u001b[0m in \u001b[0;36mread_data\u001b[0;34m(col, preview, required_variable_id, **kwargs)\u001b[0m\n\u001b[1;32m     19\u001b[0m     \u001b[0;32mfor\u001b[0m \u001b[0mmodelname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mv_dict\u001b[0m \u001b[0;32min\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mv\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mk\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mv\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mdata_dict\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mk\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m'AWI-CM-1-1-MR'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     20\u001b[0m         \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmodelname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 21\u001b[0;31m         \u001b[0mdata_final\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mmodelname\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfull_preprocessing\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mv_dict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmodelname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mplot\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     22\u001b[0m     \u001b[0;32mreturn\u001b[0m \u001b[0mdata_final\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     23\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
+      "\u001b[0;32m~/pymip/pymip/preprocessing.py\u001b[0m in \u001b[0;36mfull_preprocessing\u001b[0;34m(dat_dict, modelname, tracer_ref, u_ref, v_ref, plot, verbose)\u001b[0m\n\u001b[1;32m    103\u001b[0m         \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    104\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 105\u001b[0;31m     \u001b[0mgrid_temp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mGrid\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    106\u001b[0m     \u001b[0mds\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrecreate_metrics\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mds\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mgrid_temp\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    107\u001b[0m     \u001b[0;32mreturn\u001b[0m \u001b[0mds\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
       "\u001b[0;32m/srv/conda/envs/notebook/lib/python3.7/site-packages/xgcm/grid.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, ds, check_dims, periodic, default_shifts, face_connections, coords, metrics)\u001b[0m\n\u001b[1;32m    830\u001b[0m                 \u001b[0mis_periodic\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    831\u001b[0m                 \u001b[0mdefault_shifts\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0maxis_default_shifts\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 832\u001b[0;31m                 \u001b[0mcoords\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mcoords\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0maxis_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    833\u001b[0m             )\n\u001b[1;32m    834\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
       "\u001b[0;32m/srv/conda/envs/notebook/lib/python3.7/site-packages/xgcm/grid.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, ds, axis_name, periodic, default_shifts, coords)\u001b[0m\n\u001b[1;32m     91\u001b[0m         \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     92\u001b[0m             \u001b[0;31m# fall back on comodo conventions\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 93\u001b[0;31m             \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcoords\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcomodo\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_axis_positions_and_coords\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mds\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     94\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     95\u001b[0m         \u001b[0;31m# self.coords is a dictionary with the following structure\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
       "\u001b[0;32m/srv/conda/envs/notebook/lib/python3.7/site-packages/xgcm/comodo.py\u001b[0m in \u001b[0;36mget_axis_positions_and_coords\u001b[0;34m(ds, axis_name)\u001b[0m\n\u001b[1;32m     83\u001b[0m     }\n\u001b[1;32m     84\u001b[0m     \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcoords_without_axis_shift\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 85\u001b[0;31m         \u001b[0;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Couldn't find a center coordinate for axis %s\"\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0maxis_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     86\u001b[0m     \u001b[0;32melif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcoords_without_axis_shift\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     87\u001b[0m         raise ValueError(\n",
@@ -310,7 +310,7 @@
    ],
    "source": [
     "# load the same thing with preprocessing\n",
-    "from cmip6_preprocessing.preprocessing import read_data\n",
+    "from pymip.preprocessing import read_data\n",
     "with warnings.catch_warnings(): # these lines just make sure that the warnings dont clutter your notebook\n",
     "    warnings.simplefilter(\"ignore\")\n",
     "    data_dict = read_data(col, **query)"
diff --git a/cmip6_preprocessing/__init__.py b/pymip/__init__.py
similarity index 88%
rename from cmip6_preprocessing/__init__.py
rename to pymip/__init__.py
index 6eb8e489..aaf501b1 100644
--- a/cmip6_preprocessing/__init__.py
+++ b/pymip/__init__.py
@@ -10,7 +10,7 @@
     )  # works for python <3.8
 
 try:
-    __version__ = version("cmip6_preprocessing")
+    __version__ = version("pymip")
 except PackageNotFoundError:
     # package is not installed
     __version__ = "unknown"
diff --git a/cmip6_preprocessing/drift_removal.py b/pymip/drift_removal.py
similarity index 98%
rename from cmip6_preprocessing/drift_removal.py
rename to pymip/drift_removal.py
index 4ffd32c8..bbeb11ce 100644
--- a/cmip6_preprocessing/drift_removal.py
+++ b/pymip/drift_removal.py
@@ -7,8 +7,8 @@
 
 from xarrayutils.utils import linear_trend
 
-from cmip6_preprocessing.postprocessing import _match_datasets, exact_attrs
-from cmip6_preprocessing.utils import cmip6_dataset_id
+from pymip.postprocessing import _match_datasets, exact_attrs
+from pymip.utils import cmip6_dataset_id
 
 
 def _maybe_unpack_date(date):
@@ -97,7 +97,7 @@ def find_date_idx(time, date):
 
 
 def unify_time(parent, child, adjust_to="child"):
-    """Uses the CMIP6 specific metadata (augmented by cmip6_preprocessing....time_preprocessing!!!) to adjust parent time encoding to child experiment.
+    """Uses the CMIP6 specific metadata (augmented by pymip....time_preprocessing!!!) to adjust parent time encoding to child experiment.
     Similar to `switch_to_child_time`, but sets the time parameters (e.g. calendar) explicitly to the child conventions
     """
     branch_time_in_parent = child.attrs.get("branch_time_in_parent")
diff --git a/cmip6_preprocessing/grids.py b/pymip/grids.py
similarity index 99%
rename from cmip6_preprocessing/grids.py
rename to pymip/grids.py
index 15e541e5..3edb8872 100644
--- a/cmip6_preprocessing/grids.py
+++ b/pymip/grids.py
@@ -356,7 +356,7 @@ def create_full_grid(base_ds, grid_dict=None):
         axis_shift = grid_dict[source_id][grid_label]["axis_shift"]
     except KeyError:
         warnings.warn(
-            f"Could not find the source_id/grid_label ({source_id}/{grid_label}) combo in `grid_dict`, returning `None`. Please submit an issue to github: https://github.com/jbusecke/cmip6_preprocessing/issues"
+            f"Could not find the source_id/grid_label ({source_id}/{grid_label}) combo in `grid_dict`, returning `None`. Please submit an issue to github: https://github.com/jbusecke/pymip/issues"
         )
         return None
 
diff --git a/cmip6_preprocessing/postprocessing.py b/pymip/postprocessing.py
similarity index 98%
rename from cmip6_preprocessing/postprocessing.py
rename to pymip/postprocessing.py
index 286ceaa6..d5fc8cef 100644
--- a/cmip6_preprocessing/postprocessing.py
+++ b/pymip/postprocessing.py
@@ -5,11 +5,7 @@
 import numpy as np
 import xarray as xr
 
-from cmip6_preprocessing.utils import (
-    _key_from_attrs,
-    _maybe_make_list,
-    cmip6_dataset_id,
-)
+from pymip.utils import _key_from_attrs, _maybe_make_list, cmip6_dataset_id
 
 
 try:
@@ -194,7 +190,7 @@ def concat_members(
     (given in seperate datasets) into a single dataset for each combination of attributes,
     like source_id, grid_label, etc. but with concatnated members.
     CAUTION: If members do not have the same dimensions (e.g. longer run time for some members),
-    this can result in poor dask performance (see: https://github.com/jbusecke/cmip6_preprocessing/issues/58)
+    this can result in poor dask performance (see: https://github.com/jbusecke/pymip/issues/58)
 
     Parameters
     ----------
@@ -247,7 +243,7 @@ def concat_experiments(
     (given in seperate datasets) into a single dataset for each combination of attributes,
     like source_id, grid_label, etc. but with concatnated members.
     CAUTION: If members do not have the same dimensions (e.g. longer run time for some members),
-    this can result in poor dask performance (see: https://github.com/jbusecke/cmip6_preprocessing/issues/58)
+    this can result in poor dask performance (see: https://github.com/jbusecke/pymip/issues/58)
     Parameters
     ----------
     ds_dict : dict
@@ -374,9 +370,9 @@ def _regrid_to_target(ds_source, ds_target, regridder):
     ds_regridded.attrs["grid_label"] = ds_target.attrs["grid_label"]
     # identify the variables that are regridded
     for var in ds_regridded.data_vars:
-        ds_regridded[var].attrs[
-            "cmip6_preprocessing_regrid_method"
-        ] = ds_regridded.attrs["regrid_method"]
+        ds_regridded[var].attrs["pymip_regrid_method"] = ds_regridded.attrs[
+            "regrid_method"
+        ]
 
     return ds_regridded
 
@@ -565,7 +561,7 @@ def _parse_metric(ds, metric, dim_length_conflict="error"):
     # add attributes
     metric_stripped.attrs[
         "parsed_with"
-    ] = f"cmip6_preprocessing/postprocessing/{inspect.currentframe().f_code.co_name}"
+    ] = f"pymip/postprocessing/{inspect.currentframe().f_code.co_name}"
     # TODO: Get the package and module name without hardcoding.
 
     ds = ds.assign_coords({metric_stripped.name: metric_stripped})
diff --git a/cmip6_preprocessing/preprocessing.py b/pymip/preprocessing.py
similarity index 98%
rename from cmip6_preprocessing/preprocessing.py
rename to pymip/preprocessing.py
index 7306dedc..0172327b 100644
--- a/cmip6_preprocessing/preprocessing.py
+++ b/pymip/preprocessing.py
@@ -8,7 +8,7 @@
 import pint_xarray
 import xarray as xr
 
-from cmip6_preprocessing.utils import _maybe_make_list, cmip6_dataset_id
+from pymip.utils import _maybe_make_list, cmip6_dataset_id
 
 
 # global object for units
@@ -217,9 +217,9 @@ def correct_units(ds):
     "Converts coordinates into SI units using pint-xarray"
     # codify units with pint
     # Perhaps this should be kept separately from the fixing?
-    # See https://github.com/jbusecke/cmip6_preprocessing/pull/160#discussion_r667041858
+    # See https://github.com/jbusecke/pymip/pull/160#discussion_r667041858
     try:
-        # exclude salinity from the quantification (see https://github.com/jbusecke/cmip6_preprocessing/pull/160#issuecomment-878627027 for details)
+        # exclude salinity from the quantification (see https://github.com/jbusecke/pymip/pull/160#issuecomment-878627027 for details)
         quantified = ds.pint.quantify(_unit_overrides)
         target_units = {
             var: target_unit
diff --git a/cmip6_preprocessing/regionmask.py b/pymip/regionmask.py
similarity index 98%
rename from cmip6_preprocessing/regionmask.py
rename to pymip/regionmask.py
index 1ffc3807..adfe0fe4 100644
--- a/cmip6_preprocessing/regionmask.py
+++ b/pymip/regionmask.py
@@ -153,7 +153,7 @@ def merged_mask(
         Name of the latitude coordinate in `ds`, defaults to `lat`
     merge_dict : dict, optional
         dictionary defining new aggregated regions (as keys) and the regions to be merge into that region as as values (list of names).
-        Defaults to large scale ocean basins defined by `cmip6_preprocessing.regionmask.default_merge_dict`
+        Defaults to large scale ocean basins defined by `pymip.regionmask.default_merge_dict`
     verbose : bool, optional
        Prints more output, e.g. the regions in `basins` that were not used in the merging step. Defaults to False.
 
diff --git a/cmip6_preprocessing/specs/staggered_grid_config.yaml b/pymip/specs/staggered_grid_config.yaml
similarity index 100%
rename from cmip6_preprocessing/specs/staggered_grid_config.yaml
rename to pymip/specs/staggered_grid_config.yaml
diff --git a/cmip6_preprocessing/utils.py b/pymip/utils.py
similarity index 100%
rename from cmip6_preprocessing/utils.py
rename to pymip/utils.py
diff --git a/pyproject.toml b/pyproject.toml
index 72e8abb2..0adf9adc 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -14,7 +14,7 @@ ignore-property-decorators = true
 ignore-module = false
 fail-under = 95
 # This somehow does not work...the excludes are defined in the pre-commit-config.yaml for now
-# exclude = ["setup.py", "docs", "tests/*", "cmip6_preprocessing/_version.py"]
+# exclude = ["setup.py", "docs", "tests/*", "pymip/_version.py"]
 verbose = 1
 quiet = false
 color = true
diff --git a/setup.cfg b/setup.cfg
index c49e6203..d6472b7a 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -18,14 +18,14 @@ ignore =
 max-line-length = 105
 select = C,E,F,W,B,B950
 ignore = E203, E501, W503
-exclude = cmip6_preprocessing/_version.py
+exclude = pymip/_version.py
 
 
 [metadata]
-name = cmip6_preprocessing
+name = pymip
 description = Analysis ready CMIP6 data the easy way
-author = cmip6_preprocessing developers
-url=https://github.com/jbusecke/cmip6_preprocessing
+author = pymip developers
+url=https://github.com/jbusecke/pymip
 long_description = file: README.md
 long_description_content_type = text/markdown
 license = MIT
diff --git a/setup.py b/setup.py
index 56df5be1..2af9d8f3 100644
--- a/setup.py
+++ b/setup.py
@@ -3,7 +3,7 @@
 
 setup(
     use_scm_version={
-        "write_to": "cmip6_preprocessing/_version.py",
+        "write_to": "pymip/_version.py",
         "write_to_template": '__version__ = "{version}"',
         "tag_regex": r"^(?P<prefix>v)?(?P<version>[^\+]+)(?P<suffix>.*)?$",
     },


Test patch:
diff --git a/ci/environment-cloud-test.yml b/ci/environment-cloud-test.yml
index 3a575092..c3ef60b3 100644
--- a/ci/environment-cloud-test.yml
+++ b/ci/environment-cloud-test.yml
@@ -1,4 +1,4 @@
-name: test_env_cmip6_preprocessing
+name: test_env_pymip
 channels:
   - conda-forge
 dependencies:
diff --git a/notebooks/testing_various_issues.ipynb b/notebooks/testing_various_issues.ipynb
index 789a9256..741dd93e 100644
--- a/notebooks/testing_various_issues.ipynb
+++ b/notebooks/testing_various_issues.ipynb
@@ -29,7 +29,7 @@
     "import pandas as pd\n",
     "import numpy as np\n",
     "import intake\n",
-    "from cmip6_preprocessing.preprocessing import combined_preprocessing\n",
+    "from pymip.preprocessing import combined_preprocessing\n",
     "from dask.diagnostics import ProgressBar\n",
     "import warnings\n",
     "\n",
@@ -615,7 +615,7 @@
    "metadata": {},
    "source": [
     "I think due to [xarray/#4112](https://github.com/pydata/xarray/issues/4112), this is responsible for many of the crashes I have experienced with CanESM5. \n",
-    "[cmip6_preprocessing/#47](https://github.com/jbusecke/cmip6_preprocessing/pull/47), but I am not sure if any of the datasets encode time variable interface depth in this?"
+    "[pymip/#47](https://github.com/jbusecke/pymip/pull/47), but I am not sure if any of the datasets encode time variable interface depth in this?"
    ]
   },
   {
@@ -3856,9 +3856,9 @@
  ],
  "metadata": {
   "kernelspec": {
-   "display_name": "Python [conda env:test_env_cmip6_preprocessing]",
+   "display_name": "Python [conda env:test_env_pymip]",
    "language": "python",
-   "name": "conda-env-test_env_cmip6_preprocessing-py"
+   "name": "conda-env-test_env_pymip-py"
   },
   "language_info": {
    "codemirror_mode": {
diff --git a/tests/test_drift_removal.py b/tests/test_drift_removal.py
index 39d4cd7a..fd13fcdd 100644
--- a/tests/test_drift_removal.py
+++ b/tests/test_drift_removal.py
@@ -5,7 +5,7 @@
 import pytest
 import xarray as xr
 
-from cmip6_preprocessing.drift_removal import (
+from pymip.drift_removal import (
     _construct_cfdate,
     calculate_drift,
     find_date_idx,
@@ -14,8 +14,8 @@
     replace_time,
     unify_time,
 )
-from cmip6_preprocessing.postprocessing import exact_attrs
-from cmip6_preprocessing.utils import cmip6_dataset_id
+from pymip.postprocessing import exact_attrs
+from pymip.utils import cmip6_dataset_id
 
 
 # I copied this from a PR I made to parcels a while back.
diff --git a/tests/test_grids.py b/tests/test_grids.py
index c9ee648e..a8f84c89 100644
--- a/tests/test_grids.py
+++ b/tests/test_grids.py
@@ -5,7 +5,7 @@
 from xgcm import Grid
 from xgcm.autogenerate import generate_grid_ds
 
-from cmip6_preprocessing.grids import (
+from pymip.grids import (
     _interp_vertex_to_bounds,
     _parse_bounds_vertex,
     combine_staggered_grid,
diff --git a/tests/test_postprocessing.py b/tests/test_postprocessing.py
index 70ee3d16..00b6a405 100644
--- a/tests/test_postprocessing.py
+++ b/tests/test_postprocessing.py
@@ -6,7 +6,7 @@
 import xarray as xr
 import xesmf
 
-from cmip6_preprocessing.postprocessing import (
+from pymip.postprocessing import (
     _parse_metric,
     _promote_member_id,
     combine_datasets,
@@ -50,7 +50,7 @@ def test_parse_metric(metricname):
     xr.testing.assert_allclose(ds_parsed[metricname].reset_coords(drop=True), metric)
     assert (
         ds_parsed[metricname].attrs["parsed_with"]
-        == "cmip6_preprocessing/postprocessing/_parse_metric"
+        == "pymip/postprocessing/_parse_metric"
     )
     # check that existing attrs are conserved
     assert ds_parsed[metricname].attrs["check"] == "carry"
@@ -819,10 +819,7 @@ def test_interpolate_grid_label(verbose):
     xr.testing.assert_allclose(combined_ddict["a.a.a.a"], expected)
     xr.testing.assert_allclose(combined_ddict["b.a.a.a"], expected_simple)
 
-    assert (
-        combined_ddict["a.a.a.a"].varb.attrs["cmip6_preprocessing_regrid_method"]
-        == "bilinear"
-    )
+    assert combined_ddict["a.a.a.a"].varb.attrs["pymip_regrid_method"] == "bilinear"
 
 
 def test_nested_operations():
diff --git a/tests/test_preprocessing.py b/tests/test_preprocessing.py
index 4e2a2a4d..459fe5ff 100644
--- a/tests/test_preprocessing.py
+++ b/tests/test_preprocessing.py
@@ -4,8 +4,8 @@
 import pytest
 import xarray as xr
 
-from cmip6_preprocessing.postprocessing import exact_attrs
-from cmip6_preprocessing.preprocessing import (
+from pymip.postprocessing import exact_attrs
+from pymip.preprocessing import (
     broadcast_lonlat,
     cmip6_renaming_dict,
     combined_preprocessing,
diff --git a/tests/test_preprocessing_cloud.py b/tests/test_preprocessing_cloud.py
index d48d1ef6..57df537c 100644
--- a/tests/test_preprocessing_cloud.py
+++ b/tests/test_preprocessing_cloud.py
@@ -7,13 +7,9 @@
 import pytest
 import xarray as xr
 
-from cmip6_preprocessing.grids import combine_staggered_grid
-from cmip6_preprocessing.preprocessing import (
-    _desired_units,
-    _drop_coords,
-    combined_preprocessing,
-)
-from cmip6_preprocessing.utils import google_cmip_col, model_id_match
+from pymip.grids import combine_staggered_grid
+from pymip.preprocessing import _desired_units, _drop_coords, combined_preprocessing
+from pymip.utils import google_cmip_col, model_id_match
 
 
 pytest.importorskip("gcsfs")
@@ -57,7 +53,7 @@ def data(
         else:
             ##### debugging options
             # @charlesbluca suggested this to make this work in GHA
-            # https://github.com/jbusecke/cmip6_preprocessing/pull/62#issuecomment-741928365
+            # https://github.com/jbusecke/pymip/pull/62#issuecomment-741928365
             mm = fsspec.get_mapper(
                 cat.df["zstore"][0]
             )  # think you can pass in storage options here as well?
diff --git a/tests/test_regionmask.py b/tests/test_regionmask.py
index 39d69946..72b048e4 100644
--- a/tests/test_regionmask.py
+++ b/tests/test_regionmask.py
@@ -2,8 +2,8 @@
 import pytest
 import xarray as xr
 
-from cmip6_preprocessing.preprocessing import combined_preprocessing
-from cmip6_preprocessing.regionmask import _default_merge_dict, merged_mask
+from pymip.preprocessing import combined_preprocessing
+from pymip.regionmask import _default_merge_dict, merged_mask
 
 
 regionmask = pytest.importorskip(
diff --git a/tests/test_utils.py b/tests/test_utils.py
index f006ff64..dfc93e53 100644
--- a/tests/test_utils.py
+++ b/tests/test_utils.py
@@ -1,7 +1,7 @@
 import pytest
 import xarray as xr
 
-from cmip6_preprocessing.utils import cmip6_dataset_id, google_cmip_col, model_id_match
+from pymip.utils import cmip6_dataset_id, google_cmip_col, model_id_match
 
 
 def test_google_cmip_col():