diff --git a/sbs.conf b/sbs.conf
index f78b8b937624b320c55d23c99d1429e8718fb83a..cecf02e0c9d282ccd75f072138fcf288a4d6334a 100644
--- a/sbs.conf
+++ b/sbs.conf
@@ -59,16 +59,16 @@
 # List of Source files (libraries, etc)
 [canbus]
 Type:       srcfiles
-Files:      src/shared/canbus/CanManager.cpp 
-            src/shared/canbus/CanBus.cpp 
-            src/shared/canbus/CanSocket.cpp 
-            src/shared/canbus/CanInterrupt.cpp 
+Files:      src/shared/drivers/canbus/CanManager.cpp 
+            src/shared/drivers/canbus/CanBus.cpp 
+            src/shared/drivers/canbus/CanSocket.cpp 
+            src/shared/drivers/canbus/CanInterrupt.cpp 
 
 # Common files (like event scheduler)
 [shared]
 Type:       srcfiles
 Files:      src/shared/events/Scheduler.cpp
-            src/shared/DMA/DMA.cpp
+            src/shared/drivers/spi/SensorSpi.cpp
             src/shared/diagnostic/CpuMeter.cpp
 
 [i2c]
diff --git a/src/entrypoints/anakin-test-canbus.cpp b/src/entrypoints/anakin-test-canbus.cpp
index f1786a96e2520995a9655c5fb1e7bbbe27451db2..2ef66cd103f76d9a1911cb91f5626afe11ce5be4 100644
--- a/src/entrypoints/anakin-test-canbus.cpp
+++ b/src/entrypoints/anakin-test-canbus.cpp
@@ -24,9 +24,9 @@
 
 #include <Common.h>
 #include <BusTemplate.h>
-#include <canbus/CanManager.h>
-#include <canbus/CanSocket.h>
-#include <canbus/CanUtils.h>
+#include <drivers/canbus/CanManager.h>
+#include <drivers/canbus/CanSocket.h>
+#include <drivers/canbus/CanUtils.h>
 
 using namespace miosix;
 
diff --git a/src/entrypoints/canbus-test.cpp b/src/entrypoints/canbus-test.cpp
index 6e2c816570ed0a3b6c6449521002c2fe6a2939e5..46a9e54bd8f962f94f6bf68f7d7aff6d964da23d 100644
--- a/src/entrypoints/canbus-test.cpp
+++ b/src/entrypoints/canbus-test.cpp
@@ -21,9 +21,9 @@
  */
 
 #include <Common.h>
-#include <canbus/CanManager.h>
-#include <canbus/CanSocket.h>
-#include <canbus/CanUtils.h>
+#include <drivers/canbus/CanManager.h>
+#include <drivers/canbus/CanSocket.h>
+#include <drivers/canbus/CanUtils.h>
 #include <sensors/MPU9250.h>
 
 using namespace std;
diff --git a/src/entrypoints/dma-lowlevel-test.cpp b/src/entrypoints/dma-lowlevel-test.cpp
index a77a1d25b833a0a29e5de072b2262a0b401bf9ed..ee7c428a633d54fbbebe79da648fdc70b61a31dc 100644
--- a/src/entrypoints/dma-lowlevel-test.cpp
+++ b/src/entrypoints/dma-lowlevel-test.cpp
@@ -28,8 +28,8 @@
 #include <sensors/MAX21105.h>
 #include <sensors/MS580301BA07.h>
 
-#include <DMA/DMA.h>
-#include <DMA/SensorSampling.h>
+#include <drivers/spi/SensorSpi.h>
+#include <sensors/SensorSampling.h>
 
 using namespace miosix;
 
diff --git a/src/shared/BusTemplate.h b/src/shared/BusTemplate.h
index 2a52ea0315b9936051c5cc08edc0beb99a4e24df..8da277651e43ea791a74e82136c35b47757fe41a 100644
--- a/src/shared/BusTemplate.h
+++ b/src/shared/BusTemplate.h
@@ -32,7 +32,7 @@
 #include <Singleton.h>
 #include "i2c/stm32f2_f4_i2c.h"
 #include <util/software_i2c.h>
-#include <DMA/DMA.h>
+#include <drivers/spi/SensorSpi.h>
 
 static const int csDelay=20;
 
diff --git a/src/shared/boards/AnakinBoard.h b/src/shared/boards/AnakinBoard.h
index 1d4929f795146121daa3035a88c2ba7d45aac759..cc174044668b1f77fab33f919bc7420a9501f24d 100644
--- a/src/shared/boards/AnakinBoard.h
+++ b/src/shared/boards/AnakinBoard.h
@@ -33,8 +33,8 @@
 #include <sensors/MAX21105.h>
 #include <sensors/MS580301BA07.h>
 
-#include <DMA/DMA.h>
-#include <DMA/SensorSampling.h>
+#include <drivers/spi/SensorSpi.h>
+#include <sensors/SensorSampling.h>
 
 typedef miosix::Gpio<GPIOA_BASE, 5> GpioSck;
 typedef miosix::Gpio<GPIOA_BASE, 6> GpioMiso;
diff --git a/src/shared/sensors/ADC.h b/src/shared/drivers/adc/ADC.h
similarity index 100%
rename from src/shared/sensors/ADC.h
rename to src/shared/drivers/adc/ADC.h
diff --git a/src/shared/canbus/CanBus.cpp b/src/shared/drivers/canbus/CanBus.cpp
similarity index 100%
rename from src/shared/canbus/CanBus.cpp
rename to src/shared/drivers/canbus/CanBus.cpp
diff --git a/src/shared/canbus/CanBus.h b/src/shared/drivers/canbus/CanBus.h
similarity index 100%
rename from src/shared/canbus/CanBus.h
rename to src/shared/drivers/canbus/CanBus.h
diff --git a/src/shared/canbus/CanInterrupt.cpp b/src/shared/drivers/canbus/CanInterrupt.cpp
similarity index 100%
rename from src/shared/canbus/CanInterrupt.cpp
rename to src/shared/drivers/canbus/CanInterrupt.cpp
diff --git a/src/shared/canbus/CanManager.cpp b/src/shared/drivers/canbus/CanManager.cpp
similarity index 100%
rename from src/shared/canbus/CanManager.cpp
rename to src/shared/drivers/canbus/CanManager.cpp
diff --git a/src/shared/canbus/CanManager.h b/src/shared/drivers/canbus/CanManager.h
similarity index 100%
rename from src/shared/canbus/CanManager.h
rename to src/shared/drivers/canbus/CanManager.h
diff --git a/src/shared/canbus/CanSocket.cpp b/src/shared/drivers/canbus/CanSocket.cpp
similarity index 100%
rename from src/shared/canbus/CanSocket.cpp
rename to src/shared/drivers/canbus/CanSocket.cpp
diff --git a/src/shared/canbus/CanSocket.h b/src/shared/drivers/canbus/CanSocket.h
similarity index 100%
rename from src/shared/canbus/CanSocket.h
rename to src/shared/drivers/canbus/CanSocket.h
diff --git a/src/shared/canbus/CanUtils.h b/src/shared/drivers/canbus/CanUtils.h
similarity index 100%
rename from src/shared/canbus/CanUtils.h
rename to src/shared/drivers/canbus/CanUtils.h
diff --git a/src/shared/DMA/DMA.cpp b/src/shared/drivers/spi/SensorSpi.cpp
similarity index 99%
rename from src/shared/DMA/DMA.cpp
rename to src/shared/drivers/spi/SensorSpi.cpp
index bd2ae0e51d541a18f1ef5a994a1df51a34d3c8af..843cc4b827cfc1e0df87216cdc99db818d557558 100644
--- a/src/shared/DMA/DMA.cpp
+++ b/src/shared/drivers/spi/SensorSpi.cpp
@@ -20,7 +20,7 @@
  * THE SOFTWARE.
  */
 
-#include "DMA.h"
+#include "SensorSpi.h"
 #include <kernel/scheduler/scheduler.h>
 
 using namespace std;
diff --git a/src/shared/DMA/DMA.h b/src/shared/drivers/spi/SensorSpi.h
similarity index 98%
rename from src/shared/DMA/DMA.h
rename to src/shared/drivers/spi/SensorSpi.h
index dbaba8eba2f05ae8ea45be917ce045f909ed9e85..8c71a1a386adc104abb865145d772f64ca5d476b 100644
--- a/src/shared/DMA/DMA.h
+++ b/src/shared/drivers/spi/SensorSpi.h
@@ -20,8 +20,8 @@
  * THE SOFTWARE.
  */
 
-#ifndef SPI_DRIVER_H
-#define SPI_DRIVER_H
+#ifndef SENSOR_SPI_H
+#define SENSOR_SPI_H
 
 #include <Common.h>
 
@@ -145,4 +145,4 @@ private:
     std::vector<uint8_t> fromPeripheral;
 };
 
-#endif //SPI_DRIVER_H
+#endif //SENSOR_SPI_H
diff --git a/src/shared/i2c/FIXME.txt b/src/shared/i2c/FIXME.txt
new file mode 100644
index 0000000000000000000000000000000000000000..618ae248f01a3a0fb3a48004f6f905470c1442cd
--- /dev/null
+++ b/src/shared/i2c/FIXME.txt
@@ -0,0 +1,5 @@
+This class is present also in Miosix, there are small differences between the
+two, and some skyward files include the header in this directory, while some
+other include the one in the kernel.
+
+Integrate the changes made in this file in the kernel, and remove this file!
diff --git a/src/shared/i2c/stm32f2_f4_i2c.cpp b/src/shared/i2c/stm32f2_f4_i2c.cpp
index 617305301ed30199a06c9ef12b5d58cadc724f4a..2b11eb23447c445ef6358f6552354f5da1ebf96a 100644
--- a/src/shared/i2c/stm32f2_f4_i2c.cpp
+++ b/src/shared/i2c/stm32f2_f4_i2c.cpp
@@ -29,6 +29,10 @@
 #include <miosix.h>
 #include <kernel/scheduler/scheduler.h>
 
+#warning
+#warning "Integrate this duplicate driver in Miosix, see FIXME.txt
+#warning
+
 // #define I2C_WITH_DMA
 
 using namespace miosix;
diff --git a/src/shared/sensors/Sensor.h b/src/shared/sensors/Sensor.h
index a6a57c526c5ab4fef98949ff7c35f35444f75540..15a7cc770baaa870bf444470c594034aa71121be 100644
--- a/src/shared/sensors/Sensor.h
+++ b/src/shared/sensors/Sensor.h
@@ -27,7 +27,7 @@
 #include <Common.h>
 #include <math/Vec3.h>
 #include <math/Quaternion.h>
-#include <DMA/DMA.h>
+#include <drivers/spi/SensorSpi.h>
 
 /** Sensors class diagram
  *               ________ 
diff --git a/src/shared/DMA/SensorSampling.h b/src/shared/sensors/SensorSampling.h
similarity index 98%
rename from src/shared/DMA/SensorSampling.h
rename to src/shared/sensors/SensorSampling.h
index 1a741f6331796317c7a236012658234c8b72cdc5..7d3fcf17460d733dc21682aedf236021ffd3eaea 100644
--- a/src/shared/DMA/SensorSampling.h
+++ b/src/shared/sensors/SensorSampling.h
@@ -23,7 +23,7 @@
 #define SENSOR_SAMPLING_H
 
 #include <Common.h>
-#include <DMA/DMA.h>
+#include <drivers/spi/SensorSpi.h>
 #include <diagnostic/Log.h>
 
 class Sensor;