 	{
 		UartNetworkConfig config;
 		config.uart = swUart;
-		config.readIdlePeriodLongMs = NETWORK_UART_IDLE_PERIOD_LONG_MS;
-		config.readIdlePeriodShortMs = NETWORK_UART_IDLE_PERIOD_SHORT_MS;
 		network = new UartNetwork(config);
 	}
 
 	//// MQTT ////
 	{
-		mqtt = new MQTT::Client<Network, Countdown, MQTT_MAX_PACKET_SIZE,
-		MQTT_MAX_MESSAGE_HANDLERS>(*network, MQTT_COMMAND_TIMEOUT_MS);
+		MqttClient::Logger *mqttLogger = new MqttClient::LoggerImpl<Uart>(*hwUart);
+		MqttClient::Network * mqttNetwork = new MqttClient::NetworkImpl<Network>(*network, time);
+		MqttClient::Buffer *mqttSendBuffer = new MqttClient::ArrayBuffer<MQTT_MAX_PACKET_SIZE>();
+		MqttClient::Buffer *mqttRecvBuffer = new MqttClient::ArrayBuffer<MQTT_MAX_PACKET_SIZE>();
+		MqttClient::MessageHandlers *mqttMessageHandlers = new MqttClient::MessageHandlersImpl<MQTT_MAX_MESSAGE_HANDLERS>();
+		MqttClient::Options options;
+		options.commandTimeoutMs = MQTT_COMMAND_TIMEOUT_MS;
+		mqtt = new MqttClient (
+			options, *mqttLogger, time, *mqttNetwork, *mqttSendBuffer,
+			*mqttRecvBuffer, *mqttMessageHandlers
+		);
 	}
 
 	//// SENSOR ////
 	{
-		dht = new DHT(PIN_DHT, DHTTYPE);
+		DHT* dht = new DHT(PIN_DHT, DHTTYPE);
 		dht->begin();
 		sensorTemperature = new SensorTemperature(*dht);
 		sensorHumidity = new SensorHumidity(*dht);



////////// CONFIGURATION //////////
#define SENSOR_ID									"4A16-AEB6"
#define DHTTYPE										DHT11
#define PIN_DHT										2
#define PIN_SW_UART_RX								10

/* External Includes */
#include <MemoryFree.h>
#include <Arduino.h>
#include <MqttClient.h>
#include <SoftwareSerial.h>
#include <ArduinoJson.h>
#include <DHT.h>
