diff --git a/src/main/java/net/imglib2/type/volatiles/AbstractVolatileNativeNumericType.java b/src/main/java/net/imglib2/type/numeric/AbstractVolatileNativeNumericType.java
similarity index 94%
rename from src/main/java/net/imglib2/type/volatiles/AbstractVolatileNativeNumericType.java
rename to src/main/java/net/imglib2/type/numeric/AbstractVolatileNativeNumericType.java
index 0e24e9eb457d84e7bb6f68850d169804ec52a4fc..cf41741cab48a1cfa109dc765fe34c28d0b7590c 100644
--- a/src/main/java/net/imglib2/type/volatiles/AbstractVolatileNativeNumericType.java
+++ b/src/main/java/net/imglib2/type/numeric/AbstractVolatileNativeNumericType.java
@@ -7,13 +7,13 @@
  * %%
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
- * 
+ *
  * 1. Redistributions of source code must retain the above copyright notice,
  *    this list of conditions and the following disclaimer.
  * 2. Redistributions in binary form must reproduce the above copyright notice,
  *    this list of conditions and the following disclaimer in the documentation
  *    and/or other materials provided with the distribution.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@@ -28,10 +28,11 @@
  * #L%
  */
 
-package net.imglib2.type.volatiles;
+package net.imglib2.type.numeric;
 
 import net.imglib2.type.NativeType;
-import net.imglib2.type.numeric.NumericType;
+import net.imglib2.type.volatiles.AbstractVolatileNumericType;
+import net.imglib2.type.volatiles.VolatileNumericType;
 import net.imglib2.util.Fraction;
 
 /**
diff --git a/src/main/java/net/imglib2/type/volatiles/AbstractVolatileNativeRealType.java b/src/main/java/net/imglib2/type/numeric/AbstractVolatileNativeRealType.java
similarity index 94%
rename from src/main/java/net/imglib2/type/volatiles/AbstractVolatileNativeRealType.java
rename to src/main/java/net/imglib2/type/numeric/AbstractVolatileNativeRealType.java
index d743d63511fe9b2baac2ff602344b89c8e4151c8..29f31b88e2d02d36ad4f53eb83689a7649db27e2 100644
--- a/src/main/java/net/imglib2/type/volatiles/AbstractVolatileNativeRealType.java
+++ b/src/main/java/net/imglib2/type/numeric/AbstractVolatileNativeRealType.java
@@ -7,13 +7,13 @@
  * %%
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
- * 
+ *
  * 1. Redistributions of source code must retain the above copyright notice,
  *    this list of conditions and the following disclaimer.
  * 2. Redistributions in binary form must reproduce the above copyright notice,
  *    this list of conditions and the following disclaimer in the documentation
  *    and/or other materials provided with the distribution.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@@ -28,10 +28,11 @@
  * #L%
  */
 
-package net.imglib2.type.volatiles;
+package net.imglib2.type.numeric;
 
 import net.imglib2.type.NativeType;
-import net.imglib2.type.numeric.RealType;
+import net.imglib2.type.volatiles.AbstractVolatileRealType;
+import net.imglib2.type.volatiles.VolatileRealType;
 import net.imglib2.util.Fraction;
 
 /**
diff --git a/src/main/java/net/imglib2/type/numeric/VolatileARGBType.java b/src/main/java/net/imglib2/type/numeric/VolatileARGBType.java
index 079a5e1927c008fbac33f77c190c7628c9b8b6e3..0486d5c3b37b695170e4e507c2a46bc471657735 100644
--- a/src/main/java/net/imglib2/type/numeric/VolatileARGBType.java
+++ b/src/main/java/net/imglib2/type/numeric/VolatileARGBType.java
@@ -31,13 +31,11 @@ package net.imglib2.type.numeric;
 
 import net.imglib2.Volatile;
 import net.imglib2.img.NativeImg;
-import net.imglib2.img.basictypeaccess.IntAccess;
 import net.imglib2.img.basictypeaccess.volatiles.VolatileIntAccess;
 import net.imglib2.img.basictypeaccess.volatiles.VolatileShortAccess;
 import net.imglib2.img.basictypeaccess.volatiles.array.VolatileIntArray;
 import net.imglib2.type.PrimitiveTypeInfo;
 import net.imglib2.type.numeric.integer.UnsignedShortType;
-import net.imglib2.type.volatiles.AbstractVolatileNativeNumericType;
 
 /**
  * A {@link Volatile} variant of {@link UnsignedShortType}. It uses an
diff --git a/src/main/java/net/imglib2/type/numeric/integer/VolatileByteType.java b/src/main/java/net/imglib2/type/numeric/integer/VolatileByteType.java
index 4cb78cdc1e7a4125caa9369d690586aa211a2eff..6c7889d1ca164f59d22c67a6ba3cfb24c8edfb17 100644
--- a/src/main/java/net/imglib2/type/numeric/integer/VolatileByteType.java
+++ b/src/main/java/net/imglib2/type/numeric/integer/VolatileByteType.java
@@ -31,11 +31,10 @@ package net.imglib2.type.numeric.integer;
 
 import net.imglib2.Volatile;
 import net.imglib2.img.NativeImg;
-import net.imglib2.img.basictypeaccess.ByteAccess;
 import net.imglib2.img.basictypeaccess.volatiles.VolatileByteAccess;
 import net.imglib2.img.basictypeaccess.volatiles.array.VolatileByteArray;
 import net.imglib2.type.PrimitiveTypeInfo;
-import net.imglib2.type.volatiles.AbstractVolatileNativeRealType;
+import net.imglib2.type.numeric.AbstractVolatileNativeRealType;
 
 /**
  * A {@link Volatile} variant of {@link ByteType}. It uses an
diff --git a/src/main/java/net/imglib2/type/numeric/integer/VolatileIntType.java b/src/main/java/net/imglib2/type/numeric/integer/VolatileIntType.java
index 380d902904dbab29c8b2c643769c0a2ce367ee24..841ed1dfbcf62b6a475ebec382326f32e67ba38a 100644
--- a/src/main/java/net/imglib2/type/numeric/integer/VolatileIntType.java
+++ b/src/main/java/net/imglib2/type/numeric/integer/VolatileIntType.java
@@ -31,11 +31,10 @@ package net.imglib2.type.numeric.integer;
 
 import net.imglib2.Volatile;
 import net.imglib2.img.NativeImg;
-import net.imglib2.img.basictypeaccess.IntAccess;
 import net.imglib2.img.basictypeaccess.volatiles.VolatileIntAccess;
 import net.imglib2.img.basictypeaccess.volatiles.array.VolatileIntArray;
 import net.imglib2.type.PrimitiveTypeInfo;
-import net.imglib2.type.volatiles.AbstractVolatileNativeRealType;
+import net.imglib2.type.numeric.AbstractVolatileNativeRealType;
 
 /**
  * A {@link Volatile} variant of {@link IntType}. It uses an
diff --git a/src/main/java/net/imglib2/type/numeric/integer/VolatileLongType.java b/src/main/java/net/imglib2/type/numeric/integer/VolatileLongType.java
index b2945a79626c1e9a4736237010469b9f1615a3da..55d123d9070362e9faabc5f10861a3be8f9b35b3 100644
--- a/src/main/java/net/imglib2/type/numeric/integer/VolatileLongType.java
+++ b/src/main/java/net/imglib2/type/numeric/integer/VolatileLongType.java
@@ -31,11 +31,10 @@ package net.imglib2.type.numeric.integer;
 
 import net.imglib2.Volatile;
 import net.imglib2.img.NativeImg;
-import net.imglib2.img.basictypeaccess.LongAccess;
 import net.imglib2.img.basictypeaccess.volatiles.VolatileLongAccess;
 import net.imglib2.img.basictypeaccess.volatiles.array.VolatileLongArray;
 import net.imglib2.type.PrimitiveTypeInfo;
-import net.imglib2.type.volatiles.AbstractVolatileNativeRealType;
+import net.imglib2.type.numeric.AbstractVolatileNativeRealType;
 
 /**
  * A {@link Volatile} variant of {@link LongType}. It uses an
diff --git a/src/main/java/net/imglib2/type/numeric/integer/VolatileShortType.java b/src/main/java/net/imglib2/type/numeric/integer/VolatileShortType.java
index 92198acab022ba0cfeb6cb08837e27e1c628ab42..35ddaf7124b81f0206904b53216f3915be23ed17 100644
--- a/src/main/java/net/imglib2/type/numeric/integer/VolatileShortType.java
+++ b/src/main/java/net/imglib2/type/numeric/integer/VolatileShortType.java
@@ -31,11 +31,10 @@ package net.imglib2.type.numeric.integer;
 
 import net.imglib2.Volatile;
 import net.imglib2.img.NativeImg;
-import net.imglib2.img.basictypeaccess.ShortAccess;
 import net.imglib2.img.basictypeaccess.volatiles.VolatileShortAccess;
 import net.imglib2.img.basictypeaccess.volatiles.array.VolatileShortArray;
 import net.imglib2.type.PrimitiveTypeInfo;
-import net.imglib2.type.volatiles.AbstractVolatileNativeRealType;
+import net.imglib2.type.numeric.AbstractVolatileNativeRealType;
 
 /**
  * A {@link Volatile} variant of {@link ShortType}. It uses an
diff --git a/src/main/java/net/imglib2/type/numeric/integer/VolatileUnsignedByteType.java b/src/main/java/net/imglib2/type/numeric/integer/VolatileUnsignedByteType.java
index 2be925f1690ffbb5385c7696d27ba63b35575824..4be11a90394bdd93969d69eaed39dbfb20cf553a 100644
--- a/src/main/java/net/imglib2/type/numeric/integer/VolatileUnsignedByteType.java
+++ b/src/main/java/net/imglib2/type/numeric/integer/VolatileUnsignedByteType.java
@@ -31,11 +31,10 @@ package net.imglib2.type.numeric.integer;
 
 import net.imglib2.Volatile;
 import net.imglib2.img.NativeImg;
-import net.imglib2.img.basictypeaccess.ByteAccess;
 import net.imglib2.img.basictypeaccess.volatiles.VolatileByteAccess;
 import net.imglib2.img.basictypeaccess.volatiles.array.VolatileByteArray;
 import net.imglib2.type.PrimitiveTypeInfo;
-import net.imglib2.type.volatiles.AbstractVolatileNativeRealType;
+import net.imglib2.type.numeric.AbstractVolatileNativeRealType;
 
 /**
  * A {@link Volatile} variant of {@link UnsignedByteType}. It uses an
diff --git a/src/main/java/net/imglib2/type/numeric/integer/VolatileUnsignedIntType.java b/src/main/java/net/imglib2/type/numeric/integer/VolatileUnsignedIntType.java
index 53ebf01daa9bdd18974f2aafdc225167f306dd46..84e168fd50ec74b7c706683d73740a03a6846dbb 100644
--- a/src/main/java/net/imglib2/type/numeric/integer/VolatileUnsignedIntType.java
+++ b/src/main/java/net/imglib2/type/numeric/integer/VolatileUnsignedIntType.java
@@ -31,11 +31,10 @@ package net.imglib2.type.numeric.integer;
 
 import net.imglib2.Volatile;
 import net.imglib2.img.NativeImg;
-import net.imglib2.img.basictypeaccess.IntAccess;
 import net.imglib2.img.basictypeaccess.volatiles.VolatileIntAccess;
 import net.imglib2.img.basictypeaccess.volatiles.array.VolatileIntArray;
 import net.imglib2.type.PrimitiveTypeInfo;
-import net.imglib2.type.volatiles.AbstractVolatileNativeRealType;
+import net.imglib2.type.numeric.AbstractVolatileNativeRealType;
 
 /**
  * A {@link Volatile} variant of {@link UnsignedIntType}. It uses an underlying
diff --git a/src/main/java/net/imglib2/type/numeric/integer/VolatileUnsignedLongType.java b/src/main/java/net/imglib2/type/numeric/integer/VolatileUnsignedLongType.java
index 5be7748b99004e096870c8cc3bc387760f664766..40a9282045e3ed5c5c74336e1eb91d74d9630801 100644
--- a/src/main/java/net/imglib2/type/numeric/integer/VolatileUnsignedLongType.java
+++ b/src/main/java/net/imglib2/type/numeric/integer/VolatileUnsignedLongType.java
@@ -31,11 +31,10 @@ package net.imglib2.type.numeric.integer;
 
 import net.imglib2.Volatile;
 import net.imglib2.img.NativeImg;
-import net.imglib2.img.basictypeaccess.LongAccess;
 import net.imglib2.img.basictypeaccess.volatiles.VolatileLongAccess;
 import net.imglib2.img.basictypeaccess.volatiles.array.VolatileLongArray;
 import net.imglib2.type.PrimitiveTypeInfo;
-import net.imglib2.type.volatiles.AbstractVolatileNativeRealType;
+import net.imglib2.type.numeric.AbstractVolatileNativeRealType;
 
 /**
  * A {@link Volatile} variant of {@link UnsignedLongType}. It uses an underlying
diff --git a/src/main/java/net/imglib2/type/numeric/integer/VolatileUnsignedShortType.java b/src/main/java/net/imglib2/type/numeric/integer/VolatileUnsignedShortType.java
index 8d831e991f6ea3309556c9925f1e87f0ec639db3..7e43ce10cfd3e37e253b936e6ba8637e1d202c36 100644
--- a/src/main/java/net/imglib2/type/numeric/integer/VolatileUnsignedShortType.java
+++ b/src/main/java/net/imglib2/type/numeric/integer/VolatileUnsignedShortType.java
@@ -31,11 +31,10 @@ package net.imglib2.type.numeric.integer;
 
 import net.imglib2.Volatile;
 import net.imglib2.img.NativeImg;
-import net.imglib2.img.basictypeaccess.ShortAccess;
 import net.imglib2.img.basictypeaccess.volatiles.VolatileShortAccess;
 import net.imglib2.img.basictypeaccess.volatiles.array.VolatileShortArray;
 import net.imglib2.type.PrimitiveTypeInfo;
-import net.imglib2.type.volatiles.AbstractVolatileNativeRealType;
+import net.imglib2.type.numeric.AbstractVolatileNativeRealType;
 
 /**
  * A {@link Volatile} variant of {@link UnsignedShortType}. It uses an
diff --git a/src/main/java/net/imglib2/type/numeric/real/VolatileDoubleType.java b/src/main/java/net/imglib2/type/numeric/real/VolatileDoubleType.java
index 3a5e3f402dbba1c6a4ff28c31398eb171d4162a9..dad4ac69b56b623d97314fb2ae893ee2b2018427 100644
--- a/src/main/java/net/imglib2/type/numeric/real/VolatileDoubleType.java
+++ b/src/main/java/net/imglib2/type/numeric/real/VolatileDoubleType.java
@@ -31,11 +31,10 @@ package net.imglib2.type.numeric.real;
 
 import net.imglib2.Volatile;
 import net.imglib2.img.NativeImg;
-import net.imglib2.img.basictypeaccess.DoubleAccess;
 import net.imglib2.img.basictypeaccess.volatiles.VolatileDoubleAccess;
 import net.imglib2.img.basictypeaccess.volatiles.array.VolatileDoubleArray;
 import net.imglib2.type.PrimitiveTypeInfo;
-import net.imglib2.type.volatiles.AbstractVolatileNativeRealType;
+import net.imglib2.type.numeric.AbstractVolatileNativeRealType;
 
 /**
  * A {@link Volatile} variant of {@link DoubleType}. It uses an
diff --git a/src/main/java/net/imglib2/type/numeric/real/VolatileFloatType.java b/src/main/java/net/imglib2/type/numeric/real/VolatileFloatType.java
index c89bb7d3cce32e838c707f94384f5efca80a4ed8..b7b5b5c5bca366228f8781905682faed9d2b39eb 100644
--- a/src/main/java/net/imglib2/type/numeric/real/VolatileFloatType.java
+++ b/src/main/java/net/imglib2/type/numeric/real/VolatileFloatType.java
@@ -31,11 +31,10 @@ package net.imglib2.type.numeric.real;
 
 import net.imglib2.Volatile;
 import net.imglib2.img.NativeImg;
-import net.imglib2.img.basictypeaccess.FloatAccess;
 import net.imglib2.img.basictypeaccess.volatiles.VolatileFloatAccess;
 import net.imglib2.img.basictypeaccess.volatiles.array.VolatileFloatArray;
 import net.imglib2.type.PrimitiveTypeInfo;
-import net.imglib2.type.volatiles.AbstractVolatileNativeRealType;
+import net.imglib2.type.numeric.AbstractVolatileNativeRealType;
 
 /**
  * A {@link Volatile} variant of {@link FloatType}. It uses an