diff --git a/tests/test_atlases.py b/tests/test_atlases.py
index b2dfec113a00349dea0601f781f565561fa18b2c..97150cf267943d26c981379544232e9dfaa24829 100644
--- a/tests/test_atlases.py
+++ b/tests/test_atlases.py
@@ -17,10 +17,10 @@ import mock
 import pytest
 
 import tests
-import fsl.utils.transform      as transform
 import fsl.utils.image.resample as resample
 import fsl.data.atlases         as atlases
 import fsl.data.image           as fslimage
+import fsl.transform            as transform
 
 
 datadir = op.join(op.dirname(__file__), 'testdata')
diff --git a/tests/test_atlases_query.py b/tests/test_atlases_query.py
index 693366a2e65000685196f4c7067304cd8a59fad9..f431130c373c9491a1c7682f60c850f81cb235f9 100644
--- a/tests/test_atlases_query.py
+++ b/tests/test_atlases_query.py
@@ -11,11 +11,11 @@ import numpy           as np
 import                    pytest
 
 
-import fsl.data.atlases    as fslatlases
-import fsl.data.image      as fslimage
-import fsl.utils.transform as transform
+import fsl.data.atlases         as fslatlases
+import fsl.data.image           as fslimage
+import fsl.transform            as transform
 import fsl.utils.image.resample as resample
-import fsl.utils.cache     as cache
+import fsl.utils.cache          as cache
 
 from . import (testdir, make_random_mask)
 
diff --git a/tests/test_fsl_convert_x5.py b/tests/test_fsl_convert_x5.py
index aa3854f2c6a197cf4b8bce153d0c91d478d8cbb8..0dab1ec5286091a9be5e71b89a4d1f2ee5757be5 100644
--- a/tests/test_fsl_convert_x5.py
+++ b/tests/test_fsl_convert_x5.py
@@ -3,9 +3,9 @@
 
 import numpy as np
 
-import fsl.utils.tempdir   as tempdir
-import fsl.utils.transform as transform
-import fsl.data.image      as fslimage
+import fsl.utils.tempdir as tempdir
+import fsl.transform     as transform
+import fsl.data.image    as fslimage
 
 import fsl.scripts.fsl_convert_x5 as fsl_convert_x5
 
diff --git a/tests/test_image.py b/tests/test_image.py
index 4a5ae2e803596069507e10a1ecd9294034416937..605dbbc82362c44b697e148f91657f0d33804f57 100644
--- a/tests/test_image.py
+++ b/tests/test_image.py
@@ -19,10 +19,10 @@ import nibabel      as nib
 
 from nibabel.spatialimages import ImageFileError
 
-import fsl.data.constants    as constants
-import fsl.data.image        as fslimage
-import fsl.utils.path        as fslpath
-import fsl.utils.transform   as transform
+import fsl.data.constants as constants
+import fsl.data.image     as fslimage
+import fsl.utils.path     as fslpath
+import fsl.transform      as transform
 
 from fsl.utils.tempdir import tempdir
 
diff --git a/tests/test_mesh.py b/tests/test_mesh.py
index 243944b2e3feb1b476792a3fa319a595a8143ae7..a7a4ca5d10e5ea457e2740390384ed0692af8621 100644
--- a/tests/test_mesh.py
+++ b/tests/test_mesh.py
@@ -6,13 +6,13 @@
 #
 
 
-import os.path as op
-import numpy   as np
-import            mock
-import            pytest
+import os.path  as     op
+import numpy    as     np
+from   unittest import mock
+import                 pytest
 
-import fsl.utils.transform as transform
-import fsl.data.mesh       as fslmesh
+import fsl.transform as transform
+import fsl.data.mesh as fslmesh
 
 from . import tempdir
 
@@ -257,6 +257,13 @@ def test_needsFixing():
 
 def test_trimesh_no_trimesh():
 
+    # Make sure trimesh and rtree
+    # are imported before messing
+    # with sys.modules, otherwise
+    # weird things can happen.
+    import trimesh
+    import rtree
+
     mods = ['trimesh', 'rtree']
 
     for mod in mods:
diff --git a/tests/test_mghimage.py b/tests/test_mghimage.py
index 2496ac4eb80cff687f6d03d522281dcd777eb45f..ef53e2fd967f7f8837b8b30575de87a15966671a 100644
--- a/tests/test_mghimage.py
+++ b/tests/test_mghimage.py
@@ -12,10 +12,10 @@ import            shutil
 import numpy   as np
 import nibabel as nib
 
-import fsl.utils.tempdir   as tempdir
-import fsl.utils.transform as transform
-import fsl.data.mghimage   as fslmgh
-import fsl.data.image      as fslimage
+import fsl.utils.tempdir as tempdir
+import fsl.transform     as transform
+import fsl.data.mghimage as fslmgh
+import fsl.data.image    as fslimage
 
 
 datadir = op.join(op.abspath(op.dirname(__file__)), 'testdata')
diff --git a/tests/test_scripts/test_atlasq_query.py b/tests/test_scripts/test_atlasq_query.py
index a36e1eb5fa4f086b0e28bcd4440f08958ebb3d05..20c48634a964b7d6184d905f81abfa4489c6a1a5 100644
--- a/tests/test_scripts/test_atlasq_query.py
+++ b/tests/test_scripts/test_atlasq_query.py
@@ -15,11 +15,11 @@ import scipy.ndimage as ndi
 
 import                  pytest
 
-import fsl.utils.transform as transform
+import fsl.transform            as transform
+import fsl.data.atlases         as fslatlases
 import fsl.utils.image.resample as resample
-import fsl.data.atlases    as fslatlases
-import fsl.data.image      as fslimage
-import fsl.scripts.atlasq  as fslatlasq
+import fsl.data.image           as fslimage
+import fsl.scripts.atlasq       as fslatlasq
 
 from .. import (tempdir,
                 make_random_mask,
diff --git a/tests/test_transform/__init__.py b/tests/test_transform/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/tests/test_transform.py b/tests/test_transform/test_affine.py
similarity index 99%
rename from tests/test_transform.py
rename to tests/test_transform/test_affine.py
index 442ceaa7dc54fffb28dd51d59b13aa479cc42a06..90901c6bae8b04f22e2c3f219944aa36b453ba19 100644
--- a/tests/test_transform.py
+++ b/tests/test_transform/test_affine.py
@@ -19,11 +19,10 @@ import six
 
 import pytest
 
-import fsl.utils.transform as transform
-import fsl.data.image      as fslimage
+import fsl.transform  as transform
 
 
-datadir = op.join(op.dirname(__file__), 'testdata')
+datadir = op.join(op.dirname(__file__), '..', 'testdata')
 
 
 def readlines(filename):
diff --git a/tests/test_transform_flirt.py b/tests/test_transform/test_flirt.py
similarity index 92%
rename from tests/test_transform_flirt.py
rename to tests/test_transform/test_flirt.py
index 2419cbbe23b6583880fce7d3f74da1b0e4439f1c..98ebc08a21c64dc6b6a8e0c57cc27487c69b6a7d 100644
--- a/tests/test_transform_flirt.py
+++ b/tests/test_transform/test_flirt.py
@@ -9,14 +9,14 @@ import os.path as op
 
 import numpy as np
 
-import fsl.data.image as fslimage
-import fsl.utils.transform as transform
-import fsl.utils.tempdir   as tempdir
+import fsl.data.image    as fslimage
+import fsl.transform     as transform
+import fsl.utils.tempdir as tempdir
 
-from .test_transform import readlines
+from .test_affine import readlines
 
 
-datadir = op.join(op.dirname(__file__), 'testdata')
+datadir = op.join(op.dirname(__file__), '..', 'testdata')
 
 
 def test_read_write():
diff --git a/tests/test_transform_nonlinear.py b/tests/test_transform/test_nonlinear.py
similarity index 93%
rename from tests/test_transform_nonlinear.py
rename to tests/test_transform/test_nonlinear.py
index 7c24d90dadfa1eed102ff5380ca39c774d997fd0..8a5a051a1672d9a561ea24622ec6adbc6d2c9027 100644
--- a/tests/test_transform_nonlinear.py
+++ b/tests/test_transform/test_nonlinear.py
@@ -4,9 +4,9 @@
 import numpy   as np
 import nibabel as nib
 
-import fsl.data.image                as fslimage
-import fsl.utils.transform           as transform
-import fsl.utils.transform.nonlinear as nonlinear
+import fsl.data.image          as fslimage
+import fsl.transform           as transform
+import fsl.transform.nonlinear as nonlinear
 
 
 def _random_field():