#include <boost/foreach.hpp>
 
 using namespace std;
-using namespace boost;
-using namespace boost::program_options;
+using boost::program_options::command_line_parser;
+using boost::program_options::options_description;
+using boost::program_options::parsed_options;
+using boost::program_options::positional_options_description;
+using boost::program_options::value;
+using boost::program_options::variables_map;
 
 //-----------------------------------------------------------------------------
 // ConfigurationReader
 
 #include "dns/hostaddress.h"
 
 using namespace std;
-using namespace boost::asio;
-using namespace boost::asio::ip;
+using boost::asio::io_service;
+using boost::asio::ip::tcp;
 
 //-----------------------------------------------------------------------------
 // DnsResolver
 
 #include "icmp/ipv4header.h"
 
 using namespace std;
-using namespace boost::asio;
-using namespace boost::asio::ip;
-using namespace boost::posix_time;
+using boost::asio::const_buffers_1;
+using boost::asio::io_service;
+using boost::asio::ip::address;
+using boost::asio::ip::icmp;
+using boost::posix_time::microsec_clock;
+using boost::posix_time::ptime;
+using boost::posix_time::seconds;
 
 //-----------------------------------------------------------------------------
 // BoostPinger
     BOOST_ASSERT( !destination_ip.empty() );
 
     uint16_t port = 0;
-    address destination_address = ip::address::from_string( destination_ip );
+    address destination_address = address::from_string( destination_ip );
     icmp::endpoint destination_endpoint( destination_address, port );
     DestinationEndpoint = destination_endpoint;
 
 
 #include <boost/assert.hpp>
 
 using namespace std;
-using namespace boost;
+using boost::shared_ptr;
 
 //-----------------------------------------------------------------------------
 // HostStatusAnalyzer
 
 #include "host/boostpinger.h"
 
 using namespace std;
-using namespace boost;
-using namespace boost::asio;
-using namespace boost::posix_time;
+using boost::asio::io_service;
+using boost::bind;
+using boost::posix_time::microsec_clock;
+using boost::posix_time::ptime;
+using boost::posix_time::seconds;
+using boost::shared_ptr;
 
 //-----------------------------------------------------------------------------
 // PingScheduler
 //-----------------------------------------------------------------------------
 
 PingScheduler::PingScheduler(
-        boost::asio::io_service &io_serv,
-        const string &ping_interface,
-        const string &ping_address,
+        io_service &io_serv,
+        const string &network_interface,
+        const string &destination_address,
         const long ping_interval_in_sec,
         const int ping_fail_percentage_limit,
         shared_ptr<LinkStatusAnalyzer> link_analyzer
 
 ) :
     IoService( io_serv ),
-    LocalNetworkInterfaceName( ping_interface ),
+    LocalNetworkInterfaceName( network_interface ),
     NextPingTimer( io_serv ),
     TimeSentLastPing( microsec_clock::universal_time() ),
     PingIntervalInSec( ping_interval_in_sec ),
-    IpList( ping_address ),
-    HostAnalyzer( ping_address, ping_fail_percentage_limit, link_analyzer )
+    IpList( destination_address ),
+    HostAnalyzer( destination_address, ping_fail_percentage_limit, link_analyzer )
 {
 }
 
 
 bool PingScheduler::start_pinging()
 {
+    // TODO the DNS resolution is called only once. Find a way to resolve when
+    // the TTL ends
+    // TODO does the DNS keeps the same number of IPs?
     bool address_resolved = resolve_ping_address();
     if ( !address_resolved )
     {
 
 public:
     PingScheduler(
             boost::asio::io_service &io_serv,
-            const std::string &ping_interface,
-            const std::string &ping_address,
+            const std::string &network_interface,
+            const std::string &destination_address,
             const long ping_interval_in_sec,
             const int ping_fail_percentage_limit,
             boost::shared_ptr<LinkStatusAnalyzer> link_analyzer
 
 #include "icmp/ipv4header.h"
 
 using namespace std;
-using namespace boost::asio::ip;
+using boost::asio::ip::address_v4;
 
 //-----------------------------------------------------------------------------
 // Ipv4Header
 
 #include <boost/assert.hpp>
 
 using namespace std;
-using namespace boost::posix_time;
+using boost::posix_time::microsec_clock;
+using boost::posix_time::ptime;
 
 //-----------------------------------------------------------------------------
 // LinkStatusAnalyzer
 
 #include "host/pingscheduler.h"
 
 using namespace std;
-using namespace boost;
-using namespace boost::asio;
+using boost::asio::io_service;
+using boost::shared_ptr;
 
 int main( int argc, char* argv[] )
 {