diff --git a/pyicon/pyicon_plotting.py b/pyicon/pyicon_plotting.py
index 7d8839f32798eef300c416727c8ab1f967f0ac0e..0dd734d0060dcf9ac842e74efa4db5b0b9cbe75c 100644
--- a/pyicon/pyicon_plotting.py
+++ b/pyicon/pyicon_plotting.py
@@ -96,6 +96,10 @@ def hplot_base(IcD, IaV, clim='auto', cmap='viridis', cincr=-1.,
   if projection=='none':
     ccrs_proj = None
     ccrs_transform = None
+  # Allow users to use cartopy projections directly
+  elif isinstance(projection, ccrs.Projection):
+    ccrs_proj = projection
+    ccrs_transform = ccrs.PlateCarree()
   elif projection=='RotatedPole':
     print ("generating cartopy projection with a rotated pole lon/lat = " + 
            str(IcD.pol_lon) + "/" + str(IcD.pol_lat))
@@ -2048,10 +2052,11 @@ def plot(data,
     shade_proj = ccrs.PlateCarree()
     ccrs_proj = getattr(ccrs, projection)
     ccrs_proj = ccrs_proj(central_longitude=central_longitude)
-  else:
+  elif isinstance(projection, ccrs.Projection):
     shade_proj = ccrs.PlateCarree()
     ccrs_proj = projection
-
+  else:
+    raise ValueError(f"`projection` must be a ccrs.Projection object or a string, not {type(projection)}")
   # --- rename dimensions
   if 'cell' in data.dims:
     data = data.rename(cell='ncells')
diff --git a/pyicon/quickplots/pyicon_quickplots.py b/pyicon/quickplots/pyicon_quickplots.py
index 3c24ad33813748979c9a001c8bcaa827296b1afb..de66471c90975b55ed784b17baecac515fe0370f 100644
--- a/pyicon/quickplots/pyicon_quickplots.py
+++ b/pyicon/quickplots/pyicon_quickplots.py
@@ -7,15 +7,6 @@ import numpy as np
 # --- reading data 
 from netCDF4 import Dataset, num2date
 import datetime
-# --- plotting
-import matplotlib.pyplot as plt
-import matplotlib
-from matplotlib import ticker
-#import my_toolbox as my
-import cartopy
-import cartopy.crs as ccrs
-from cartopy.mpl.ticker import LongitudeFormatter, LatitudeFormatter
-import cmocean
 # --- debugging
 from ipdb import set_trace as mybreak  
 import pyicon as pyic
@@ -124,12 +115,6 @@ def qp_hplot(fpath, var, IcD='none', depth=-1e33, iz=0, it=0,
   if units!='':
     IaV.units = units
 
-  # --- cartopy projection
-  if projection=='none':
-    ccrs_proj = None
-  else:
-    ccrs_proj = getattr(ccrs, projection)()
-
   # --- do plotting
   (ax, cax, 
    hm,