diff --git a/source/corvusoft/restbed/detail/http_impl.cpp b/source/corvusoft/restbed/detail/http_impl.cpp
index c76ca44..dbc32d0 100644
--- a/source/corvusoft/restbed/detail/http_impl.cpp
+++ b/source/corvusoft/restbed/detail/http_impl.cpp
@@ -67,7 +67,7 @@ using std::placeholders::_2;
 using asio::buffer;
 using asio::ip::tcp;
 using asio::streambuf;
-using asio::io_service;
+using asio::io_context;
 #ifdef BUILD_SSL
     using asio::ssl::stream;
 #endif
@@ -86,7 +86,7 @@ namespace restbed
             {
                 string query = String::empty;
                 
-                for ( const auto parameter : parameters )
+                for ( const auto& parameter : parameters )
                 {
                     query += Uri::encode_parameter( parameter.first ) + "=" + Uri::encode_parameter( parameter.second ) + "&";
                 }
@@ -146,7 +146,7 @@ namespace restbed
             {
                 if ( request->m_pimpl->m_io_service == nullptr )
                 {
-                    request->m_pimpl->m_io_service = make_shared< asio::io_service >( );
+                    request->m_pimpl->m_io_service = make_shared< asio::io_context >( );
                 }
 
                 if ( String::uppercase( request->m_pimpl->m_protocol ) == "HTTP" )
@@ -210,7 +210,7 @@ namespace restbed
                 socket->set_verify_mode( asio::ssl::verify_none );
             }
             
-            socket->set_verify_callback( asio::ssl::rfc2818_verification( request->get_host( ) ) );
+            socket->set_verify_callback( asio::ssl::host_name_verification( request->get_host( ) ) );
             request->m_pimpl->m_socket = make_shared< SocketImpl >( *request->m_pimpl->m_io_service, socket );
         }
 #endif
diff --git a/source/corvusoft/restbed/detail/ipc_socket_impl.cpp b/source/corvusoft/restbed/detail/ipc_socket_impl.cpp
index e332781..e828121 100644
--- a/source/corvusoft/restbed/detail/ipc_socket_impl.cpp
+++ b/source/corvusoft/restbed/detail/ipc_socket_impl.cpp
@@ -38,7 +38,7 @@ using std::chrono::steady_clock;
 using restbed::detail::IPCSocketImpl;
 
 //External Namespaces
-using asio::io_service;
+using asio::io_context;
 using asio::steady_timer;
 using asio::local::stream_protocol;
 
diff --git a/source/corvusoft/restbed/detail/ipc_socket_impl.hpp b/source/corvusoft/restbed/detail/ipc_socket_impl.hpp
index 54f1ee7..10d3217 100644
--- a/source/corvusoft/restbed/detail/ipc_socket_impl.hpp
+++ b/source/corvusoft/restbed/detail/ipc_socket_impl.hpp
@@ -24,8 +24,8 @@
 //External Includes
 #include <asio/streambuf.hpp>
 #include <asio/steady_timer.hpp>
-#include <asio/io_service.hpp>
-#include <asio/io_service_strand.hpp>
+#include <asio/io_context.hpp>
+#include <asio/io_context_strand.hpp>
 #include <asio/local/stream_protocol.hpp>
 
 //System Namespaces
@@ -162,7 +162,7 @@ namespace restbed
 
                 std::shared_ptr< asio::steady_timer > m_timer;
                 
-                std::shared_ptr< asio::io_service::strand > m_strand;
+                std::shared_ptr< asio::io_context::strand > m_strand;
                                 
                 std::shared_ptr< asio::local::stream_protocol::socket > m_socket;
         };
diff --git a/source/corvusoft/restbed/detail/request_impl.hpp b/source/corvusoft/restbed/detail/request_impl.hpp
index ae7f41a..4c1f8a3 100644
--- a/source/corvusoft/restbed/detail/request_impl.hpp
+++ b/source/corvusoft/restbed/detail/request_impl.hpp
@@ -15,7 +15,7 @@
 
 //External Includes
 #include <asio/streambuf.hpp>
-#include <asio/io_service.hpp>
+#include <asio/io_context.hpp>
 
 //System Namespaces
 
@@ -60,7 +60,7 @@ namespace restbed
             
             std::multimap< std::string, std::string > m_query_parameters { };
             
-            std::shared_ptr< asio::io_service > m_io_service = nullptr;
+            std::shared_ptr< asio::io_context > m_io_service = nullptr;
             
             std::shared_ptr< SocketImpl > m_socket = nullptr;
             
diff --git a/source/corvusoft/restbed/detail/service_impl.cpp b/source/corvusoft/restbed/detail/service_impl.cpp
index 0a7ad43..5edcb5d 100644
--- a/source/corvusoft/restbed/detail/service_impl.cpp
+++ b/source/corvusoft/restbed/detail/service_impl.cpp
@@ -70,7 +70,7 @@ using std::regex_constants::icase;
 
 //External Namespaces
 using asio::ip::tcp;
-using asio::io_service;
+using asio::io_context;
 using asio::signal_set;
 using asio::ip::address;
 using asio::socket_base;
@@ -88,7 +88,7 @@ namespace restbed
             m_logger( nullptr ),
             m_supported_methods( ),
             m_settings( nullptr ),
-            m_io_service( make_shared< ::io_service >( ) ),
+            m_io_service( make_shared< ::io_context >( ) ),
             m_signal_set( nullptr ),
             m_session_manager( nullptr ),
             m_web_socket_manager( nullptr ),
@@ -132,7 +132,7 @@ namespace restbed
             
                 if ( not m_settings->get_bind_address( ).empty( ) )
                 {
-                    const auto address = address::from_string( m_settings->get_bind_address( ) );
+                    const auto address = asio::ip::make_address( m_settings->get_bind_address( ) );
                     m_acceptor = make_shared< tcp::acceptor >( *m_io_service, tcp::endpoint( address, m_settings->get_port( ) ) );
                 }
                 else
@@ -261,7 +261,7 @@ namespace restbed
                 
                 if ( not m_ssl_settings->get_bind_address( ).empty( ) )
                 {
-                    const auto address = address::from_string( m_ssl_settings->get_bind_address( ) );
+                    const auto address = asio::ip::make_address( m_ssl_settings->get_bind_address( ) );
                     m_ssl_acceptor = make_shared< tcp::acceptor >( *m_io_service, tcp::endpoint( address, m_ssl_settings->get_port( ) ) );
                 }
                 else
diff --git a/source/corvusoft/restbed/detail/service_impl.hpp b/source/corvusoft/restbed/detail/service_impl.hpp
index 9b804e8..af07469 100644
--- a/source/corvusoft/restbed/detail/service_impl.hpp
+++ b/source/corvusoft/restbed/detail/service_impl.hpp
@@ -21,7 +21,7 @@
 //External Includes
 #include <asio/ip/tcp.hpp>
 #include <asio/signal_set.hpp>
-#include <asio/io_service.hpp>
+#include <asio/io_context.hpp>
 
 #ifdef BUILD_SSL
     #include <asio/ssl.hpp>
@@ -146,7 +146,7 @@ namespace restbed
                 
                 std::shared_ptr< const Settings > m_settings;
                 
-                std::shared_ptr< asio::io_service > m_io_service;
+                std::shared_ptr< asio::io_context > m_io_service;
                 
                 std::shared_ptr< asio::signal_set > m_signal_set;
                 
diff --git a/source/corvusoft/restbed/detail/session_impl.cpp b/source/corvusoft/restbed/detail/session_impl.cpp
index 2cda06b..1911869 100644
--- a/source/corvusoft/restbed/detail/session_impl.cpp
+++ b/source/corvusoft/restbed/detail/session_impl.cpp
@@ -85,7 +85,7 @@ namespace restbed
         
         void SessionImpl::fetch_body( const size_t length, const shared_ptr< Session > session, const function< void ( const shared_ptr< Session >, const Bytes& ) >& callback ) const
         {
-            const auto data_ptr = asio::buffer_cast< const Byte* >( session->m_pimpl->m_request->m_pimpl->m_buffer->data( ) );
+            const auto data_ptr = static_cast< const Byte* >( session->m_pimpl->m_request->m_pimpl->m_buffer->data( ).data( ) );
             const auto data = Bytes( data_ptr, data_ptr + length );
             session->m_pimpl->m_request->m_pimpl->m_buffer->consume( length );
             
diff --git a/source/corvusoft/restbed/detail/socket_impl.cpp b/source/corvusoft/restbed/detail/socket_impl.cpp
index d0d6c0f..b778d16 100644
--- a/source/corvusoft/restbed/detail/socket_impl.cpp
+++ b/source/corvusoft/restbed/detail/socket_impl.cpp
@@ -38,7 +38,7 @@ using restbed::detail::SocketImpl;
 
 //External Namespaces
 using asio::ip::tcp;
-using asio::io_service;
+using asio::io_context;
 using asio::steady_timer;
 
 #ifdef BUILD_SSL
@@ -56,7 +56,7 @@ namespace restbed
             m_timeout( 0 ),
             m_io_service( context ),
             m_timer( make_shared< asio::steady_timer >( m_io_service ) ),
-            m_strand( make_shared< io_service::strand > ( m_io_service ) ),
+            m_strand( make_shared< io_context::strand > ( m_io_service ) ),
             m_resolver( nullptr ),
             m_socket( socket )
 #ifdef BUILD_SSL
@@ -73,7 +73,7 @@ namespace restbed
             m_timeout( 0 ),
             m_io_service( context ),
             m_timer( make_shared< asio::steady_timer >( m_io_service ) ),
-            m_strand( make_shared< io_service::strand > ( m_io_service ) ),
+            m_strand( make_shared< io_context::strand > ( m_io_service ) ),
             m_resolver( nullptr ),
             m_socket( nullptr ),
             m_ssl_socket( socket )
@@ -119,9 +119,7 @@ namespace restbed
         void SocketImpl::connect( const string& hostname, const uint16_t port, const function< void ( const error_code& ) >& callback )
         {
             m_resolver = make_shared< tcp::resolver >( m_io_service );
-            tcp::resolver::query query( hostname, ::to_string( port ) );
-            
-            m_resolver->async_resolve( query, [ this, callback ]( const error_code & error, tcp::resolver::iterator endpoint_iterator )
+            m_resolver->async_resolve(hostname, ::to_string( port ), [this, callback] (const error_code& error, tcp::resolver::results_type results) 
             {
                 if ( not error )
                 {
@@ -130,7 +128,7 @@ namespace restbed
 #else
                     auto& socket = *m_socket;
 #endif
-                    asio::async_connect( socket, endpoint_iterator, [ this, callback ]( const error_code & error, tcp::resolver::iterator )
+                    asio::async_connect( socket, results, [ this, callback ]( const error_code & error, const tcp::endpoint& )
                     {
 #ifdef BUILD_SSL
                     
@@ -154,13 +152,14 @@ namespace restbed
         void SocketImpl::sleep_for( const milliseconds& delay, const function< void ( const error_code& ) >& callback )
         {
             m_timer->cancel( );
-            m_timer->expires_from_now( delay );
+            m_timer->expires_after( delay );
             m_timer->async_wait( callback );
         }
 
 		void SocketImpl::start_write(const Bytes& data, const std::function< void ( const std::error_code&, std::size_t ) >& callback)
 		{
-			m_strand->post([this, data, callback] { write_helper(data, callback); });
+            auto cb = [this, data, callback] { write_helper(data, callback); };
+			m_strand->post(cb, std::allocator<decltype(cb)>{});
         }
 
 		size_t SocketImpl::start_read(const shared_ptr< asio::streambuf >& data, const string& delimiter, error_code& error)
@@ -175,25 +174,20 @@ namespace restbed
 
         void SocketImpl::start_read( const std::size_t length, const function< void ( const Bytes ) > success, const function< void ( const error_code ) > failure )
 		{
-			m_strand->post([this, length, success, failure] {
-				read(length, success, failure);
-			});
+            auto cb = [this, length, success, failure] { read(length, success, failure); };
+			m_strand->post(cb, std::allocator<decltype(cb)>{});
         }
         
 		void SocketImpl::start_read(const shared_ptr< asio::streambuf >& data, const size_t length, const function< void ( const error_code&, size_t ) >& callback)
 		{
-			m_strand->post([this, data, length, callback] 
-			{
-				read(data, length, callback);
-			});
+            auto cb = [this, data, length, callback] { read(data, length, callback); };
+			m_strand->post(cb, std::allocator<decltype(cb)>{});
 		}
 
 		void SocketImpl::start_read(const shared_ptr< asio::streambuf >& data, const string& delimiter, const function< void ( const error_code&, size_t ) >& callback)
-		{
-			m_strand->post([this, data, delimiter, callback] 
-			{
-				read(data, delimiter, callback);
-			});
+		{ 
+            auto cb = [this, data, delimiter, callback] { read(data, delimiter, callback); };
+			m_strand->post(cb, std::allocator<decltype(cb)>{});
         }
 
         string SocketImpl::get_local_endpoint( void )
@@ -319,7 +313,7 @@ namespace restbed
             m_timeout( 0 ),
             m_io_service( context ),
             m_timer( make_shared< asio::steady_timer >( m_io_service ) ),
-            m_strand( make_shared< io_service::strand > ( m_io_service ) ),
+            m_strand( make_shared< io_context::strand > ( m_io_service ) ),
             m_resolver( nullptr ),
             m_socket( nullptr )
 #ifdef BUILD_SSL
@@ -331,7 +325,7 @@ namespace restbed
         
         void SocketImpl::connection_timeout_handler( const shared_ptr< SocketImpl > socket, const error_code& error )
         {
-            if ( error or socket == nullptr or socket->m_timer->expires_at( ) > steady_clock::now( ) )
+            if ( error or socket == nullptr or socket->m_timer->expiry( ) > steady_clock::now( ) )
             {
                 return;
             }
@@ -349,7 +343,7 @@ namespace restbed
 			if(m_is_open)
 			{
 				m_timer->cancel( );
-				m_timer->expires_from_now( m_timeout );
+				m_timer->expires_after( m_timeout );
 				m_timer->async_wait( m_strand->wrap( bind( &SocketImpl::connection_timeout_handler, this, shared_from_this( ), _1 ) ) );
 #ifdef BUILD_SSL
 				if ( m_socket not_eq nullptr )
@@ -426,7 +420,7 @@ namespace restbed
             const auto buffer = make_shared< Bytes >( data );
             
             m_timer->cancel( );
-            m_timer->expires_from_now( m_timeout );
+            m_timer->expires_after( m_timeout );
             m_timer->async_wait( m_strand->wrap( bind( &SocketImpl::connection_timeout_handler, this, shared_from_this( ), _1 ) ) );
 #ifdef BUILD_SSL
             
@@ -482,7 +476,7 @@ namespace restbed
         size_t SocketImpl::read( const shared_ptr< asio::streambuf >& data, const size_t length, error_code& error )
         {
             m_timer->cancel( );
-            m_timer->expires_from_now( m_timeout );
+            m_timer->expires_after( m_timeout );
             m_timer->async_wait( m_strand->wrap( bind( &SocketImpl::connection_timeout_handler, this, shared_from_this( ), _1 ) ) );
 
             size_t size = 0;
@@ -531,7 +525,7 @@ namespace restbed
         void SocketImpl::read( const std::size_t length, const function< void ( const Bytes ) > success, const function< void ( const error_code ) > failure )
         {
             m_timer->cancel( );
-            m_timer->expires_from_now( m_timeout );
+            m_timer->expires_after( m_timeout );
             m_timer->async_wait( m_strand->wrap( bind( &SocketImpl::connection_timeout_handler, this, shared_from_this( ), _1 ) ) );
             
 #ifdef BUILD_SSL
@@ -551,7 +545,7 @@ namespace restbed
                     }
                     else
                     {
-                        const auto data_ptr = asio::buffer_cast< const Byte* >( data->data( ) );
+                        const auto data_ptr = static_cast< const Byte* >( data->data( ).data( ) );
                         success( Bytes( data_ptr, data_ptr + length ) );
                     }
                 } );
@@ -571,7 +565,7 @@ namespace restbed
                     }
                     else
                     {
-                        const auto data_ptr = asio::buffer_cast< const Byte* >( data->data( ) );
+                        const auto data_ptr = static_cast< const Byte* >( data->data( ).data( ) );
                         success( Bytes( data_ptr, data_ptr + length ) );
                     }
                 } );
@@ -583,7 +577,7 @@ namespace restbed
         void SocketImpl::read( const shared_ptr< asio::streambuf >& data, const size_t length, const function< void ( const error_code&, size_t ) >& callback )
         {
             m_timer->cancel( );
-            m_timer->expires_from_now( m_timeout );
+            m_timer->expires_after( m_timeout );
             m_timer->async_wait( m_strand->wrap( bind( &SocketImpl::connection_timeout_handler, this, shared_from_this( ), _1 ) ) );
             
 #ifdef BUILD_SSL
@@ -631,7 +625,7 @@ namespace restbed
         size_t SocketImpl::read( const shared_ptr< asio::streambuf >& data, const string& delimiter, error_code& error )
         {
             m_timer->cancel( );
-            m_timer->expires_from_now( m_timeout );
+            m_timer->expires_after( m_timeout );
             m_timer->async_wait( bind( &SocketImpl::connection_timeout_handler, this, shared_from_this( ), _1 ) );
 
             size_t length = 0;
@@ -680,7 +674,7 @@ namespace restbed
         void SocketImpl::read( const shared_ptr< asio::streambuf >& data, const string& delimiter, const function< void ( const error_code&, size_t ) >& callback )
         {
             m_timer->cancel( );
-            m_timer->expires_from_now( m_timeout );
+            m_timer->expires_after( m_timeout );
             m_timer->async_wait( m_strand->wrap( bind( &SocketImpl::connection_timeout_handler, this, shared_from_this( ), _1 ) ) );
             
 #ifdef BUILD_SSL
diff --git a/source/corvusoft/restbed/detail/socket_impl.hpp b/source/corvusoft/restbed/detail/socket_impl.hpp
index d9d89d2..a8bcf97 100644
--- a/source/corvusoft/restbed/detail/socket_impl.hpp
+++ b/source/corvusoft/restbed/detail/socket_impl.hpp
@@ -22,8 +22,8 @@
 #include <asio/ip/tcp.hpp>
 #include <asio/streambuf.hpp>
 #include <asio/steady_timer.hpp>
-#include <asio/io_service.hpp>
-#include <asio/io_service_strand.hpp>
+#include <asio/io_context.hpp>
+#include <asio/io_context_strand.hpp>
 
 #ifdef BUILD_SSL
     #include <asio/ssl.hpp>
@@ -164,7 +164,7 @@ namespace restbed
 
                 std::shared_ptr< asio::steady_timer > m_timer;
                 
-                std::shared_ptr< asio::io_service::strand > m_strand;
+                std::shared_ptr< asio::io_context::strand > m_strand;
                 
                 std::shared_ptr< asio::ip::tcp::resolver > m_resolver;
                 
diff --git a/source/corvusoft/restbed/http.cpp b/source/corvusoft/restbed/http.cpp
index 06e279f..ca15113 100644
--- a/source/corvusoft/restbed/http.cpp
+++ b/source/corvusoft/restbed/http.cpp
@@ -218,13 +218,13 @@ namespace restbed
                 throw runtime_error( String::format( "Socket receive failed: '%s'", error.message( ).data( ) ) );
             }
             
-            const auto data_ptr = asio::buffer_cast< const Byte* >( request->m_pimpl->m_buffer->data( ) );
+            const auto data_ptr = static_cast< const Byte* >( request->m_pimpl->m_buffer->data( ).data( ) );
             data = Bytes( data_ptr, data_ptr + length );
             request->m_pimpl->m_buffer->consume( length );
         }
         else
         {
-            const auto data_ptr = asio::buffer_cast< const Byte* >( request->m_pimpl->m_buffer->data( ) );
+            const auto data_ptr = static_cast< const Byte* >( request->m_pimpl->m_buffer->data( ).data( ) );
             data = Bytes( data_ptr, data_ptr + length );
             request->m_pimpl->m_buffer->consume( length );
         }
@@ -265,7 +265,7 @@ namespace restbed
             throw runtime_error( String::format( "Socket receive failed: '%s'", error.message( ).data( ) ) );
         }
         
-        const auto data_ptr = asio::buffer_cast< const Byte* >( request->m_pimpl->m_buffer->data( ) );
+        const auto data_ptr = static_cast< const Byte* >( request->m_pimpl->m_buffer->data( ).data( ) );
         const Bytes data( data_ptr, data_ptr + size );
         request->m_pimpl->m_buffer->consume( size );
         
diff --git a/source/corvusoft/restbed/service.cpp b/source/corvusoft/restbed/service.cpp
index 7bc9711..6a10e3f 100644
--- a/source/corvusoft/restbed/service.cpp
+++ b/source/corvusoft/restbed/service.cpp
@@ -27,7 +27,7 @@
 #include "corvusoft/restbed/detail/web_socket_manager_impl.hpp"
 
 //External Includes
-#include <asio/io_service.hpp>
+#include <asio/io_context.hpp>
 #include <asio/steady_timer.hpp>
 
 #ifdef BUILD_SSL
@@ -64,7 +64,7 @@ using restbed::detail::ServiceImpl;
 using restbed::detail::WebSocketManagerImpl;
 
 //External Namespaces
-using asio::io_service;
+using asio::io_context;
 using asio::steady_timer;
 
 namespace restbed
@@ -181,7 +181,7 @@ namespace restbed
         
         if ( m_pimpl->m_ready_handler not_eq nullptr )
         {
-            m_pimpl->m_io_service->post( m_pimpl->m_ready_handler );
+            asio::post(*m_pimpl->m_io_service, m_pimpl->m_ready_handler);
         }
         
         m_pimpl->m_uptime = steady_clock::now( );
@@ -333,12 +333,12 @@ namespace restbed
         
         if ( interval == milliseconds::zero( ) )
         {
-            m_pimpl->m_io_service->post( task );
+            asio::post(*m_pimpl->m_io_service, task);
             return;
         }
         
         auto timer = make_shared< steady_timer >( *m_pimpl->m_io_service );
-        timer->expires_from_now( interval );
+        timer->expires_after( interval );
         timer->async_wait( [ this, task, interval, timer ]( const error_code& )
         {
             task( );
diff --git a/test/feature/source/connection_timeout/client.cpp b/test/feature/source/connection_timeout/client.cpp
index 1d04955..ee04139 100644
--- a/test/feature/source/connection_timeout/client.cpp
+++ b/test/feature/source/connection_timeout/client.cpp
@@ -29,7 +29,7 @@ using namespace restbed;
 //External Namespaces
 using asio::ip::tcp;
 using asio::connect;
-using asio::io_service;
+using asio::io_context;
 using asio::socket_base;
 
 void get_handler( const shared_ptr< Session > session )
diff --git a/test/feature/source/connection_timeout/server.cpp b/test/feature/source/connection_timeout/server.cpp
index 5388c25..6e128c8 100644
--- a/test/feature/source/connection_timeout/server.cpp
+++ b/test/feature/source/connection_timeout/server.cpp
@@ -31,7 +31,7 @@ using namespace restbed;
 //External Namespaces
 using asio::ip::tcp;
 using asio::connect;
-using asio::io_service;
+using asio::io_context;
 using asio::socket_base;
 
 void get_handler( const shared_ptr< Session > session )
diff --git a/test/regression/source/resource_error_handler_overflow.cpp b/test/regression/source/resource_error_handler_overflow.cpp
index 2f7de44..94be7f8 100644
--- a/test/regression/source/resource_error_handler_overflow.cpp
+++ b/test/regression/source/resource_error_handler_overflow.cpp
@@ -27,7 +27,7 @@ using namespace restbed;
 //External Namespaces
 using asio::ip::tcp;
 using asio::connect;
-using asio::io_service;
+using asio::io_context;
 using asio::system_error;
 
 void error_handler( const int, const exception&, const std::shared_ptr< Session > session )
diff --git a/test/regression/source/service_error_handler_overflow.cpp b/test/regression/source/service_error_handler_overflow.cpp
index 86ffe8f..f70a268 100644
--- a/test/regression/source/service_error_handler_overflow.cpp
+++ b/test/regression/source/service_error_handler_overflow.cpp
@@ -27,7 +27,7 @@ using namespace restbed;
 //External Namespaces
 using asio::ip::tcp;
 using asio::connect;
-using asio::io_service;
+using asio::io_context;
 using asio::system_error;
 
 void error_handler( const int, const exception&, const std::shared_ptr< Session > session )
diff --git a/test/regression/source/uncaught_exception_when_peer_closes_connection.cpp b/test/regression/source/uncaught_exception_when_peer_closes_connection.cpp
index 3698708..1ac14d0 100644
--- a/test/regression/source/uncaught_exception_when_peer_closes_connection.cpp
+++ b/test/regression/source/uncaught_exception_when_peer_closes_connection.cpp
@@ -23,7 +23,7 @@ using namespace restbed;
 //External Namespaces
 using asio::ip::tcp;
 using asio::connect;
-using asio::io_service;
+using asio::io_context;
 using asio::system_error;
 
 bool exception_was_thrown = false;
