--- /dev/null
+#include "host/pinginterval.h"
+
+#include <boost/assert.hpp>
+
+//-----------------------------------------------------------------------------
+// PingInterval
+//-----------------------------------------------------------------------------
+
+PingInterval::PingInterval(
+        PingIntervalType interval
+) :
+    OriginalInterval( interval ),
+    Interval( interval )
+{
+    BOOST_ASSERT( 0 < interval );
+}
+
+PingInterval::~PingInterval()
+{
+}
+
+PingInterval::operator PingIntervalType()
+{
+    BOOST_ASSERT( 0 < Interval );
+
+    return Interval;
+}
+
+void PingInterval::back_to_original()
+{
+    Interval = OriginalInterval;
+
+    BOOST_ASSERT( 0 < Interval );
+}
+
+void PingInterval::speed_up()
+{
+    BOOST_ASSERT( 0 < Interval );
+
+    if ( can_speed_up() )
+    {
+        Interval = Interval / 2;
+    }
+
+    if ( Interval < 1 )
+    {
+        Interval = 1;
+    }
+
+    BOOST_ASSERT( 0 < Interval );
+}
+
+bool PingInterval::can_speed_up() const
+{
+    PingIntervalType half_original = OriginalInterval / 2;
+
+    return ( Interval > half_original );
+}
 
 #ifndef PINGINTERVAL_H
 #define PINGINTERVAL_H
 
-#include <boost/assert.hpp>
+//-----------------------------------------------------------------------------
+// PingIntervalType
+//-----------------------------------------------------------------------------
+
+typedef long PingIntervalType;
 
 //-----------------------------------------------------------------------------
 // PingInterval
  * with helper methods to encapsulate interval computation.
  * Scope: one object per host.
  */
-template<typename T>
 class PingInterval
 {
 public:
-    PingInterval( T interval );
+    PingInterval( PingIntervalType interval );
     ~PingInterval();
 
-    operator T();
+    operator PingIntervalType();
 
     void back_to_original();
     void speed_up();
     bool can_speed_up() const;
 
 private:
-    const T OriginalInterval;
-    T Interval;
+    const PingIntervalType OriginalInterval;
+    PingIntervalType Interval;
 
 };
 
-
-template<typename T>
-    PingInterval<T>::PingInterval(
-            T interval
-    ) :
-        OriginalInterval( interval ),
-        Interval( interval )
-    {
-        BOOST_ASSERT( 0 < interval );
-    }
-
-template<typename T>
-    PingInterval<T>::~PingInterval()
-    {
-    }
-
-template<typename T>
-    PingInterval<T>::operator T()
-    {
-        BOOST_ASSERT( 0 < Interval );
-
-        return Interval;
-    }
-
-template<typename T>
-    void PingInterval<T>::back_to_original()
-    {
-        Interval = OriginalInterval;
-
-        BOOST_ASSERT( 0 < Interval );
-    }
-
-template<typename T>
-    void PingInterval<T>::speed_up()
-    {
-        BOOST_ASSERT( 0 < Interval );
-
-        if ( can_speed_up() )
-        {
-            Interval = Interval / 2;
-        }
-
-        if ( Interval < 1 )
-        {
-            Interval = 1;
-        }
-
-        BOOST_ASSERT( 0 < Interval );
-    }
-
-template<typename T>
-    bool PingInterval<T>::can_speed_up() const
-    {
-        T half_original = OriginalInterval / 2;
-
-        return ( Interval > half_original );
-    }
-
-
 #endif /* PINGINTERVAL_H */
 
     std::string LocalNetworkInterfaceName;
     boost::asio::deadline_timer NextPingTimer;
     boost::posix_time::ptime TimeSentLastPing;
-    PingInterval<long> PingIntervalInSec;
+    PingInterval PingIntervalInSec;
     DnsResolver IpList;
     HostStatusAnalyzer HostAnalyzer;