diff --git a/Builds/VisualStudio2012/beast.vcxproj b/Builds/VisualStudio2012/beast.vcxproj
index 863017b823..cdc39ec662 100644
--- a/Builds/VisualStudio2012/beast.vcxproj
+++ b/Builds/VisualStudio2012/beast.vcxproj
@@ -76,6 +76,7 @@
+
diff --git a/Builds/VisualStudio2012/beast.vcxproj.filters b/Builds/VisualStudio2012/beast.vcxproj.filters
index 97c40163d7..a2c09e4306 100644
--- a/Builds/VisualStudio2012/beast.vcxproj.filters
+++ b/Builds/VisualStudio2012/beast.vcxproj.filters
@@ -146,6 +146,9 @@
{af535ad5-a06c-462f-8ac0-8207a708e032}
+
+ {c7a576bb-27b2-486e-aa14-3c51aa86c50f}
+
@@ -764,6 +767,9 @@
beast_asio\sockets
+
+ beast_asio\system
+
diff --git a/modules/beast_asio/beast_asio.h b/modules/beast_asio/beast_asio.h
index 8429bac781..930cb4268a 100644
--- a/modules/beast_asio/beast_asio.h
+++ b/modules/beast_asio/beast_asio.h
@@ -40,42 +40,8 @@
// Must come before boost includes to fix the bost placeholders.
#include "../beast_core/beast_core.h"
-//------------------------------------------------------------------------------
-
/* This module requires boost and possibly OpenSSL */
-
-// Make sure we take care of fixing boost::bind oddities first.
-#if !defined(BEAST_CORE_H_INCLUDED)
-#error beast_core.h must be included before including this file
-#endif
-
-#if BEAST_WIN32
-# ifndef _WIN32_WINNT
-# define _WIN32_WINNT 0x0600
-# endif
-# ifndef _VARIADIC_MAX
-# define _VARIADIC_MAX 10
-# endif
-#endif
-
-#include
-#include
-#include
-#include
-
-//#include
-//#include
-//#include
-//#include
-//#include
-//#include
-
-// VFALCO TODO check for version availability
-#ifndef BOOST_ASIO_INITFN_RESULT_TYPE
-#define BOOST_ASIO_INITFN_RESULT_TYPE(expr,val) void
-#endif
-
-//------------------------------------------------------------------------------
+#include "system/beast_BoostIncludes.h"
namespace beast
{
diff --git a/modules/beast_asio/sockets/beast_Socket.h b/modules/beast_asio/sockets/beast_Socket.h
index bfa4804d0b..43925bf527 100644
--- a/modules/beast_asio/sockets/beast_Socket.h
+++ b/modules/beast_asio/sockets/beast_Socket.h
@@ -54,6 +54,19 @@ public:
//
//--------------------------------------------------------------------------
+#if 0
+ typedef Socket next_layer_type;
+ typedef Socket lowest_layer_type;
+
+ virtual next_layer_type& next_layer () = 0;
+
+ virtual next_layer_type const& next_layer () const = 0;
+
+ virtual lowest_layer_type& lowest_layer () = 0;
+
+ virtual lowest_layer_type const& lowest_layer () const = 0;
+#endif
+
/** Determines if the underlying stream requires a handshake.
If is_handshaked is true, it will be necessary to call handshake or
@@ -85,20 +98,21 @@ public:
@endcode
*/
+
template
- Object* native_object ()
+ Object& native_object ()
{
void* const object = native_object_raw ();
- if (object != nullptr)
- return dynamic_cast