diff --git a/library/stm32f072xb/gpio/abstract-gpio/abstract-gpio-init.hpp b/library/stm32f072xb/gpio/abstract-gpio/abstract-gpio-init.hpp
index 262c5a68e2fe074d783819858db99c65b2760f29..01e45c2e04cb29ec4afdc8539545798e1b7556f6 100644
--- a/library/stm32f072xb/gpio/abstract-gpio/abstract-gpio-init.hpp
+++ b/library/stm32f072xb/gpio/abstract-gpio/abstract-gpio-init.hpp
@@ -1,12 +1,15 @@
 #include "gpio-register.hpp"
+
 #ifndef ABSTRACT_GPIO_INIT_H
 #define ABSTRACT_GPIO_INIT_H
 
 namespace stm32f072xb {
 
 struct AbstractGpioInit {
-	GpioPin pin;
-	Pupdr pullMode;
+	const GpioPin pin;
+	const Pupdr pullMode;
 };
+
 }  // namespace stm32f072xb
+
 #endif
diff --git a/library/stm32f072xb/gpio/abstract-gpio/abstract-gpio.cpp b/library/stm32f072xb/gpio/abstract-gpio/abstract-gpio.cpp
index 2d7746868522427f1bc1d1ecf830d53614f41a6e..75ece456a5fcae895ba27dbaf7548ef4d77b3a5b 100644
--- a/library/stm32f072xb/gpio/abstract-gpio/abstract-gpio.cpp
+++ b/library/stm32f072xb/gpio/abstract-gpio/abstract-gpio.cpp
@@ -1,13 +1,26 @@
 #include "abstract-gpio.hpp"
 
 using namespace stm32f072xb;
-AbstractGpio::AbstractGpio(GPIO_TypeDef* gpio, AbstractGpioInit gpioInit) : _gpio(gpio), _gpioInit(gpioInit) {}
+
+AbstractGpio::AbstractGpio(GPIO_TypeDef* gpio, const AbstractGpioInit& gpioInit) : _gpio(gpio), _gpioInit(gpioInit) {}
 
 AbstractGpio::~AbstractGpio() {
 	CLEAR_BIT(_gpio->PUPDR, 3 << (getPin() * 2));
 }
 
-void AbstractGpio::setupRegister() {
+uint8_t AbstractGpio::getPin() const {
+	return uint8_t(_gpioInit.pin);
+}
+
+uint8_t AbstractGpio::getPullMode() const {
+	return uint8_t(_gpioInit.pullMode);
+}
+
+GPIO_TypeDef* AbstractGpio::getGpio() const {
+	return _gpio;
+}
+
+void AbstractGpio::setupRegister() const {
 	CLEAR_BIT(_gpio->PUPDR, 3 << (getPin() * 2));
 	SET_BIT(_gpio->PUPDR, getPullMode() << (getPin() * 2));
 }
diff --git a/library/stm32f072xb/gpio/abstract-gpio/abstract-gpio.hpp b/library/stm32f072xb/gpio/abstract-gpio/abstract-gpio.hpp
index 2fc9b771037afe39ff27a70fb125cde2c4876efc..6e282373418fedbd1ece9164cdd27320e5a42c64 100644
--- a/library/stm32f072xb/gpio/abstract-gpio/abstract-gpio.hpp
+++ b/library/stm32f072xb/gpio/abstract-gpio/abstract-gpio.hpp
@@ -5,20 +5,21 @@
 #define ABSTRACT_GPIO_H
 
 namespace stm32f072xb {
+
 class AbstractGpio {
-   public:
-	AbstractGpio(GPIO_TypeDef* gpio, AbstractGpioInit gpioInit);
-	GPIO_TypeDef* getGpio() { return _gpio; };
-	uint8_t getPin() { return (uint8_t)_gpioInit.pin; }
-	uint8_t getPullMode() { return (uint8_t)_gpioInit.pullMode; }
-	~AbstractGpio();
+   private:
+	GPIO_TypeDef* _gpio;
+	const AbstractGpioInit _gpioInit;
 
    protected:
-	void setupRegister();
+	void setupRegister() const;
 
-   private:
-	GPIO_TypeDef* _gpio;
-	AbstractGpioInit _gpioInit;
+   public:
+	AbstractGpio(GPIO_TypeDef* gpio, const AbstractGpioInit& gpioInit);
+	~AbstractGpio();
+	GPIO_TypeDef* getGpio() const;
+	uint8_t getPin() const;
+	uint8_t getPullMode() const;
 };
 
 }  // namespace stm32f072xb
diff --git a/library/stm32f072xb/gpio/alternate-gpio/alternate-gpio-init.hpp b/library/stm32f072xb/gpio/alternate-gpio/alternate-gpio-init.hpp
index 75e55648c7b5fc098eb8e006f0c6d69e9a4567a3..62fe798efd7b5fbb6c67b86ddbd07d80eec954c8 100644
--- a/library/stm32f072xb/gpio/alternate-gpio/alternate-gpio-init.hpp
+++ b/library/stm32f072xb/gpio/alternate-gpio/alternate-gpio-init.hpp
@@ -3,9 +3,13 @@
 
 #ifndef ALTERNATE_GPIO_INIT_H
 #define ALTERNATE_GPIO_INIT_H
+
 namespace stm32f072xb {
-struct AlternateGpioInit : AbstractGpioInit {
-	AlternateFunction alternateFunction;
+
+struct AlternateGpioInit : public AbstractGpioInit {
+	const AlternateFunction alternateFunction;
 };
+
 }  // namespace stm32f072xb
+
 #endif
diff --git a/library/stm32f072xb/gpio/alternate-gpio/alternate-gpio.hpp b/library/stm32f072xb/gpio/alternate-gpio/alternate-gpio.hpp
index 0907665e881eadf5cff2ac9babb301d7e78daeb4..3bf4d1bfd19feb770b6db2f70944ec199e8226bb 100644
--- a/library/stm32f072xb/gpio/alternate-gpio/alternate-gpio.hpp
+++ b/library/stm32f072xb/gpio/alternate-gpio/alternate-gpio.hpp
@@ -8,23 +8,29 @@ namespace stm32f072xb {
 
 template <Port T>
 class AlternateGpio : public Gpio<T> {
-   private:
    public:
-	AlternateGpio(AlternateGpioInit gpioInit) : Gpio<T>(gpioInit) {
+	AlternateGpio(const AlternateGpioInit& gpioInit) : Gpio<T>(gpioInit) {
 		CLEAR_BIT(this->getGpio()->OTYPER, 1 << (this->getPin()));
 		CLEAR_BIT(this->getGpio()->MODER, 0x3UL << (this->getPin() * 2));
 		SET_BIT(this->getGpio()->MODER, 0x2UL << (this->getPin() * 2));
+
 		uint32_t position = 0;
 		uint8_t level = 0;
-		if ((int)gpioInit.pin < (int)GpioPin::P8) {
+
+		if (int(gpioInit.pin) < (int)GpioPin::P8) {
 			position = 4 * (int)gpioInit.pin;
 			level = 0;
-		} else {
+		}
+
+		else {
 			position = 4 * (((int)gpioInit.pin) % 8);
 			level = 1;
 		}
+
 		SET_BIT(this->getGpio()->AFR[level], (int)gpioInit.alternateFunction << position);
 	}
 };
+
 }  // namespace stm32f072xb
+
 #endif
diff --git a/library/stm32f072xb/gpio/gpio-register/gpio-afr.hpp b/library/stm32f072xb/gpio/gpio-register/gpio-afr.hpp
index a63c469c9fba2ff29febe22f00d84d9bd35cbd09..b8f023a14622688818b13f718308927988675f6b 100644
--- a/library/stm32f072xb/gpio/gpio-register/gpio-afr.hpp
+++ b/library/stm32f072xb/gpio/gpio-register/gpio-afr.hpp
@@ -2,7 +2,9 @@
 #define AFR_H
 
 namespace stm32f072xb {
+
 enum class AlternateFunction { AF0, AF1, AF2, AF3, AF4, AF5, AF6, AF7 };
-}
+
+}  // namespace stm32f072xb
 
 #endif
diff --git a/library/stm32f072xb/gpio/gpio-register/gpio-moder.hpp b/library/stm32f072xb/gpio/gpio-register/gpio-moder.hpp
index 23c6989febd2d38717d0377fdd8ab5dfe9bfa78d..48991cef0507ac8557ea32f6b4cdcb0a5ba15f19 100644
--- a/library/stm32f072xb/gpio/gpio-register/gpio-moder.hpp
+++ b/library/stm32f072xb/gpio/gpio-register/gpio-moder.hpp
@@ -1,8 +1,10 @@
-#include <stm32f0xx.h>
 #ifndef MODER_H
 #define MODER_H
+
 namespace stm32f072xb {
+
 enum class Moder { INPUT, OUPUT, ALTERNATE, ANALOG };
-}
+
+}  // namespace stm32f072xb
 
 #endif
diff --git a/library/stm32f072xb/gpio/gpio-register/gpio-ospeedr.hpp b/library/stm32f072xb/gpio/gpio-register/gpio-ospeedr.hpp
index 48636937cc80c0d09dea1bedda54ca083f96d6b4..9042635a9aebef077e909c347d9ff7e14bc42a3a 100644
--- a/library/stm32f072xb/gpio/gpio-register/gpio-ospeedr.hpp
+++ b/library/stm32f072xb/gpio/gpio-register/gpio-ospeedr.hpp
@@ -1,7 +1,10 @@
-#include <stm32f0xx.h>
 #ifndef SPEED_R_H
 #define SPEED_R_H
+
 namespace stm32f072xb {
-enum class SpeedR { LOW, MEDIUM, HIGH };
-}
+
+enum class Speedr { LOW, MEDIUM, HIGH };
+
+}  // namespace stm32f072xb
+
 #endif
diff --git a/library/stm32f072xb/gpio/gpio-register/gpio-otyper.hpp b/library/stm32f072xb/gpio/gpio-register/gpio-otyper.hpp
index 41301ba47a98b9a69011b8c6481e9c70f73e5614..9b05b0897b337a0b9cc15217ae7d8861cd902442 100644
--- a/library/stm32f072xb/gpio/gpio-register/gpio-otyper.hpp
+++ b/library/stm32f072xb/gpio/gpio-register/gpio-otyper.hpp
@@ -1,7 +1,10 @@
-#include <stm32f0xx.h>
 #ifndef OTYPER_H
 #define OTYPER_H
+
 namespace stm32f072xb {
-enum class Otyper { PUSH_PULL, OPEN_DRAIN };
-}
+
+enum class OTyper { PUSH_PULL, OPEN_DRAIN };
+
+}  // namespace stm32f072xb
+
 #endif
diff --git a/library/stm32f072xb/gpio/gpio-register/gpio-pin.hpp b/library/stm32f072xb/gpio/gpio-register/gpio-pin.hpp
index 85170df5c2cc836f4257ab615e12cefe5a9a1251..3b940f78d27f53a7e21da7955f01b3c2da047925 100644
--- a/library/stm32f072xb/gpio/gpio-register/gpio-pin.hpp
+++ b/library/stm32f072xb/gpio/gpio-register/gpio-pin.hpp
@@ -1,8 +1,10 @@
-#include <stm32f0xx.h>
 #ifndef GPIO_PIN_H
 #define GPIO_PIN_H
+
 namespace stm32f072xb {
+
 enum class GpioPin : uint8_t { P0, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15 };
-}
+
+}  // namespace stm32f072xb
 
 #endif
diff --git a/library/stm32f072xb/gpio/gpio-register/gpio-port.hpp b/library/stm32f072xb/gpio/gpio-register/gpio-port.hpp
index 181f32b3fb9bc0ebff22adb2d575a8378b81b34b..11cd9f57ee2f32da33118c5955098d80ab0dd8a7 100644
--- a/library/stm32f072xb/gpio/gpio-register/gpio-port.hpp
+++ b/library/stm32f072xb/gpio/gpio-register/gpio-port.hpp
@@ -1,8 +1,10 @@
-#include <stm32f0xx.h>
 #ifndef PORT_H
 #define PORT_H
 
 namespace stm32f072xb {
+
 enum class Port { A, B, C, D, E, F };
-}
+
+}  // namespace stm32f072xb
+
 #endif
diff --git a/library/stm32f072xb/gpio/gpio-register/gpio-pupdr.hpp b/library/stm32f072xb/gpio/gpio-register/gpio-pupdr.hpp
index c4d20c6872c9763c3c9cea48df66ee00176d1f5e..f0ac6b1e6341567f5f3bf846b5b16dc051e90045 100644
--- a/library/stm32f072xb/gpio/gpio-register/gpio-pupdr.hpp
+++ b/library/stm32f072xb/gpio/gpio-register/gpio-pupdr.hpp
@@ -1,9 +1,10 @@
-#include <stm32f0xx.h>
 #ifndef PUPDR_H
 #define PUPDR_H
 
 namespace stm32f072xb {
+
 enum class Pupdr { NONE, PULL_UP, PULL_DOWN };
-}
+
+}  // namespace stm32f072xb
 
 #endif
diff --git a/library/stm32f072xb/gpio/gpio-register/gpio-register.hpp b/library/stm32f072xb/gpio/gpio-register/gpio-register.hpp
index 8e8a0427d571d48c5ea282b656b7f0702dda921a..4d9be27098812c74de80c9636c25e2f636a178a1 100644
--- a/library/stm32f072xb/gpio/gpio-register/gpio-register.hpp
+++ b/library/stm32f072xb/gpio/gpio-register/gpio-register.hpp
@@ -1,3 +1,4 @@
+#include <stm32f0xx.h>
 #include "gpio-afr.hpp"
 #include "gpio-moder.hpp"
 #include "gpio-ospeedr.hpp"
diff --git a/library/stm32f072xb/gpio/gpio.cpp b/library/stm32f072xb/gpio/gpio.cpp
index df1222c432a239385900a3faeab73cfa4180ae85..ecc25004b965ab59e55c00a217bb0111f25bd1f5 100644
--- a/library/stm32f072xb/gpio/gpio.cpp
+++ b/library/stm32f072xb/gpio/gpio.cpp
@@ -2,30 +2,30 @@
 
 using namespace stm32f072xb;
 
-Gpio<Port::A>::Gpio(AbstractGpioInit gpioInit) : AbstractGpio(GPIOA, gpioInit) {
+Gpio<Port::A>::Gpio(const AbstractGpioInit& gpioInit) : AbstractGpio(GPIOA, gpioInit) {
 	SET_BIT(RCC->AHBENR, RCC_AHBENR_GPIOAEN);  // enable GPIOA (p.120)
 	this->setupRegister();
 }
 
-Gpio<Port::B>::Gpio(AbstractGpioInit gpioInit) : AbstractGpio(GPIOB, gpioInit) {
+Gpio<Port::B>::Gpio(const AbstractGpioInit& gpioInit) : AbstractGpio(GPIOB, gpioInit) {
 	SET_BIT(RCC->AHBENR, RCC_AHBENR_GPIOBEN);
 	this->setupRegister();
 }
-Gpio<Port::C>::Gpio(AbstractGpioInit gpioInit) : AbstractGpio(GPIOC, gpioInit) {
+Gpio<Port::C>::Gpio(const AbstractGpioInit& gpioInit) : AbstractGpio(GPIOC, gpioInit) {
 	SET_BIT(RCC->AHBENR, RCC_AHBENR_GPIOCEN);
 	this->setupRegister();
 }
 
-Gpio<Port::D>::Gpio(AbstractGpioInit gpioInit) : AbstractGpio(GPIOD, gpioInit) {
+Gpio<Port::D>::Gpio(const AbstractGpioInit& gpioInit) : AbstractGpio(GPIOD, gpioInit) {
 	SET_BIT(RCC->AHBENR, RCC_AHBENR_GPIODEN);
 	this->setupRegister();
 }
-Gpio<Port::E>::Gpio(AbstractGpioInit gpioInit) : AbstractGpio(GPIOE, gpioInit) {
+Gpio<Port::E>::Gpio(const AbstractGpioInit& gpioInit) : AbstractGpio(GPIOE, gpioInit) {
 	SET_BIT(RCC->AHBENR, RCC_AHBENR_GPIOEEN);
 	this->setupRegister();
 }
 
-Gpio<Port::F>::Gpio(AbstractGpioInit gpioInit) : AbstractGpio(GPIOF, gpioInit) {
+Gpio<Port::F>::Gpio(const AbstractGpioInit& gpioInit) : AbstractGpio(GPIOF, gpioInit) {
 	SET_BIT(RCC->AHBENR, RCC_AHBENR_GPIOFEN);
 	this->setupRegister();
 }
diff --git a/library/stm32f072xb/gpio/gpio.hpp b/library/stm32f072xb/gpio/gpio.hpp
index e708baafd4e5a89c4a0893827ec9f77f28da610a..0ce60e3851536bbd1c4d7b057cd646d566de4386 100644
--- a/library/stm32f072xb/gpio/gpio.hpp
+++ b/library/stm32f072xb/gpio/gpio.hpp
@@ -1,53 +1,51 @@
 #include "abstract-gpio-init.hpp"
 #include "abstract-gpio.hpp"
+
 #ifndef GPIO_H
 #define GPIO_H
 
 namespace stm32f072xb {
+
 template <Port T>
 class Gpio : public AbstractGpio {
-   private:
    public:
-	Gpio(AbstractGpioInit gpioInit);
+	Gpio(const AbstractGpioInit& gpioInit);
 };
 
 template <>
 class Gpio<Port::A> : public AbstractGpio {
-   private:
    public:
-	Gpio(AbstractGpioInit gpioInit);
+	Gpio(const AbstractGpioInit& gpioInit);
 };
 
 template <>
 class Gpio<Port::B> : public AbstractGpio {
-   private:
    public:
-	Gpio(AbstractGpioInit gpioInit);
+	Gpio(const AbstractGpioInit& gpioInit);
 };
+
 template <>
 class Gpio<Port::C> : public AbstractGpio {
-   private:
    public:
-	Gpio(AbstractGpioInit gpioInit);
+	Gpio(const AbstractGpioInit& gpioInit);
 };
 
 template <>
 class Gpio<Port::D> : public AbstractGpio {
-   private:
    public:
-	Gpio(AbstractGpioInit gpioInit);
+	Gpio(const AbstractGpioInit& gpioInit);
 };
+
 template <>
 class Gpio<Port::E> : public AbstractGpio {
-   private:
    public:
-	Gpio(AbstractGpioInit gpioInit);
+	Gpio(const AbstractGpioInit& gpioInit);
 };
+
 template <>
 class Gpio<Port::F> : public AbstractGpio {
-   private:
    public:
-	Gpio(AbstractGpioInit gpioInit);
+	Gpio(const AbstractGpioInit& gpioInit);
 };
 
 }  // namespace stm32f072xb
diff --git a/library/stm32f072xb/gpio/input-gpio/input-gpio-init.hpp b/library/stm32f072xb/gpio/input-gpio/input-gpio-init.hpp
index 676ee3cb6e433a79b009eaad8d7ed0166756ad27..0e824281d4e7ec6c50edb31e322d5137353dc58f 100644
--- a/library/stm32f072xb/gpio/input-gpio/input-gpio-init.hpp
+++ b/library/stm32f072xb/gpio/input-gpio/input-gpio-init.hpp
@@ -3,7 +3,11 @@
 
 #ifndef INPUT_GPIO_INIT_H
 #define INPUT_GPIO_INIT_H
+
 namespace stm32f072xb {
-struct InputGpioInit : AbstractGpioInit {};
+
+struct InputGpioInit : public AbstractGpioInit {};
+
 }  // namespace stm32f072xb
+
 #endif
diff --git a/library/stm32f072xb/gpio/input-gpio/input-gpio.hpp b/library/stm32f072xb/gpio/input-gpio/input-gpio.hpp
index 1550fe4c583eeb1cbb9ca70c8ccdd802ce0b02b4..dda9da8ae2a8f4006c249bb86d23af9f5899c9e3 100644
--- a/library/stm32f072xb/gpio/input-gpio/input-gpio.hpp
+++ b/library/stm32f072xb/gpio/input-gpio/input-gpio.hpp
@@ -8,21 +8,20 @@ namespace stm32f072xb {
 
 template <Port T>
 class InputGpio : public Gpio<T> {
-   private:
    public:
-	InputGpio(InputGpioInit gpioInit) : Gpio<T>(gpioInit) {
+	InputGpio(const InputGpioInit& gpioInit) : Gpio<T>(gpioInit) {
 		CLEAR_BIT(this->getGpio()->MODER, 0x3UL << (this->getPin() * 2));
 	}
 
-	~InputGpio();
-
-	FlagStatus readPin() {
+	FlagStatus readPin() const {
 		return READ_BIT(this->getGpio()->IDR, 1 << this->getPin()) ? FlagStatus::SET : FlagStatus::RESET;
 	}
 
-	bool isHigh() { return READ_BIT(this->getGpio()->IDR, 1 << this->getPin()); }
+	bool isHigh() const { return READ_BIT(this->getGpio()->IDR, 1 << this->getPin()); }
 
-	bool isLow() { return !READ_BIT(this->getGpio()->IDR, 1 << this->getPin()); }
+	bool isLow() const { return !READ_BIT(this->getGpio()->IDR, 1 << this->getPin()); }
 };
+
 }  // namespace stm32f072xb
+
 #endif
diff --git a/library/stm32f072xb/gpio/output-gpio/output-gpio-init.hpp b/library/stm32f072xb/gpio/output-gpio/output-gpio-init.hpp
index 47b0073699c69997c37b9cc237a8fb3556893c57..79f1c1085780d05aec8a094d4cf82a39e03557e7 100644
--- a/library/stm32f072xb/gpio/output-gpio/output-gpio-init.hpp
+++ b/library/stm32f072xb/gpio/output-gpio/output-gpio-init.hpp
@@ -6,6 +6,8 @@
 
 namespace stm32f072xb {
 
-struct OutputGpioInit : AbstractGpioInit {};
+struct OutputGpioInit : public AbstractGpioInit {};
+
 }  // namespace stm32f072xb
+
 #endif
diff --git a/library/stm32f072xb/gpio/output-gpio/output-gpio.hpp b/library/stm32f072xb/gpio/output-gpio/output-gpio.hpp
index a0f439dd8b14b0fe0ecb632f07b140894c6f0855..edee15f60f0248b8027bf6bb9885f2f5aa589330 100644
--- a/library/stm32f072xb/gpio/output-gpio/output-gpio.hpp
+++ b/library/stm32f072xb/gpio/output-gpio/output-gpio.hpp
@@ -12,15 +12,13 @@ class OutputGpio : public Gpio<T> {
 	FlagStatus _status;
 
    public:
-	OutputGpio(OutputGpioInit gpioInit) : Gpio<T>(gpioInit) {
+	OutputGpio(const OutputGpioInit& gpioInit) : Gpio<T>(gpioInit) {
 		CLEAR_BIT(this->getGpio()->MODER, 0x3UL << (this->getPin() * 2));
 		SET_BIT(this->getGpio()->MODER, 0x1UL << (this->getPin() * 2));
 		CLEAR_BIT(this->getGpio()->OTYPER, 0x1UL << (this->getPin()));
 	}
 
-	~OutputGpio();
-
-	void setPin(FlagStatus status) {
+	void setPin(const FlagStatus& status) {
 		_status = status;
 		(status == FlagStatus::SET) ? SET_BIT(this->getGpio()->ODR, 1 << this->getPin())
 		                            : CLEAR_BIT(this->getGpio()->ODR, 1 << this->getPin());
@@ -33,4 +31,5 @@ class OutputGpio : public Gpio<T> {
 };
 
 }  // namespace stm32f072xb
+
 #endif
diff --git a/library/stm32f072xb/gpio/uart-gpio/uart-gpio-type.hpp b/library/stm32f072xb/gpio/uart-gpio/uart-gpio-type.hpp
index ef33e3db51d65bc07a76d1b639a72ab4762a33e0..6c705de61e7054d33f2473f0e4b898733a25cb34 100644
--- a/library/stm32f072xb/gpio/uart-gpio/uart-gpio-type.hpp
+++ b/library/stm32f072xb/gpio/uart-gpio/uart-gpio-type.hpp
@@ -2,7 +2,9 @@
 #define UART_GPIO_TYPE_H
 
 namespace stm32f072xb {
+
 enum class UartGpioType { RX, TX };
-}
+
+}  // namespace stm32f072xb
 
 #endif
diff --git a/library/stm32f072xb/gpio/uart-gpio/uart-gpio.hpp b/library/stm32f072xb/gpio/uart-gpio/uart-gpio.hpp
index fb631689d55d296bc306c2bac94e45b6187f9657..e1452956ff374db397692de5def06ec1ae452793 100644
--- a/library/stm32f072xb/gpio/uart-gpio/uart-gpio.hpp
+++ b/library/stm32f072xb/gpio/uart-gpio/uart-gpio.hpp
@@ -6,138 +6,121 @@
 #include "uart-register.hpp"
 
 namespace stm32f072xb {
+
 template <UartRegister T, UartGpioType V, Port U>
 class UartGpio : public AlternateGpio<U> {
-   private:
    public:
 	UartGpio();
 };
 
 template <>
 class UartGpio<UartRegister::UART1, UartGpioType::TX, Port::A> : public AlternateGpio<Port::A> {
-   private:
    public:
 	UartGpio();
 };
 
 template <>
 class UartGpio<UartRegister::UART1, UartGpioType::RX, Port::A> : public AlternateGpio<Port::A> {
-   private:
    public:
 	UartGpio();
 };
 
 template <>
 class UartGpio<UartRegister::UART1, UartGpioType::TX, Port::B> : public AlternateGpio<Port::B> {
-   private:
    public:
 	UartGpio();
 };
 
 template <>
 class UartGpio<UartRegister::UART1, UartGpioType::RX, Port::B> : public AlternateGpio<Port::B> {
-   private:
    public:
 	UartGpio();
 };
 
 template <>
 class UartGpio<UartRegister::UART2, UartGpioType::TX, Port::A> : public AlternateGpio<Port::A> {
-   private:
    public:
 	UartGpio();
 };
 
 template <>
 class UartGpio<UartRegister::UART2, UartGpioType::RX, Port::A> : public AlternateGpio<Port::A> {
-   private:
    public:
 	UartGpio();
 };
 
 template <>
 class UartGpio<UartRegister::UART2, UartGpioType::TX, Port::D> : public AlternateGpio<Port::D> {
-   private:
    public:
 	UartGpio();
 };
 
 template <>
 class UartGpio<UartRegister::UART2, UartGpioType::RX, Port::D> : public AlternateGpio<Port::D> {
-   private:
    public:
 	UartGpio();
 };
 
 template <>
 class UartGpio<UartRegister::UART3, UartGpioType::TX, Port::B> : public AlternateGpio<Port::B> {
-   private:
    public:
 	UartGpio();
 };
 
 template <>
 class UartGpio<UartRegister::UART3, UartGpioType::RX, Port::B> : public AlternateGpio<Port::B> {
-   private:
    public:
 	UartGpio();
 };
 
 template <>
 class UartGpio<UartRegister::UART3, UartGpioType::TX, Port::C> : public AlternateGpio<Port::C> {
-   private:
    public:
 	UartGpio();
 };
 
 template <>
 class UartGpio<UartRegister::UART3, UartGpioType::RX, Port::C> : public AlternateGpio<Port::C> {
-   private:
    public:
 	UartGpio();
 };
 
 template <>
 class UartGpio<UartRegister::UART3, UartGpioType::TX, Port::D> : public AlternateGpio<Port::D> {
-   private:
    public:
 	UartGpio();
 };
 
 template <>
 class UartGpio<UartRegister::UART3, UartGpioType::RX, Port::D> : public AlternateGpio<Port::D> {
-   private:
    public:
 	UartGpio();
 };
 
 template <>
 class UartGpio<UartRegister::UART4, UartGpioType::TX, Port::A> : public AlternateGpio<Port::A> {
-   private:
    public:
 	UartGpio();
 };
 
 template <>
 class UartGpio<UartRegister::UART4, UartGpioType::RX, Port::A> : public AlternateGpio<Port::A> {
-   private:
    public:
 	UartGpio();
 };
 
 template <>
 class UartGpio<UartRegister::UART4, UartGpioType::TX, Port::C> : public AlternateGpio<Port::C> {
-   private:
    public:
 	UartGpio();
 };
 
 template <>
 class UartGpio<UartRegister::UART4, UartGpioType::RX, Port::C> : public AlternateGpio<Port::C> {
-   private:
    public:
 	UartGpio();
 };
 
 }  // namespace stm32f072xb
+
 #endif