diff --git a/daemon/core/face-uri.cpp b/daemon/core/face-uri.cpp
index 442837b..5da35cd 100644
--- a/daemon/core/face-uri.cpp
+++ b/daemon/core/face-uri.cpp
@@ -134,7 +134,7 @@
   : m_isV6(false)
 {
   m_scheme = "ether";
-  m_host = address.toString(':');
+  m_host = address.toString();
 }
 #endif // HAVE_PCAP
 
diff --git a/daemon/face/ethernet-face.cpp b/daemon/face/ethernet-face.cpp
index 5f12103..02cc041 100644
--- a/daemon/face/ethernet-face.cpp
+++ b/daemon/face/ethernet-face.cpp
@@ -70,8 +70,8 @@
   ::snprintf(filter, sizeof(filter),
              "(ether proto 0x%x) && (ether dst %s) && (not ether src %s)",
              ETHERTYPE_NDN,
-             m_destAddress.toString(':').c_str(),
-             m_srcAddress.toString(':').c_str());
+             m_destAddress.toString().c_str(),
+             m_srcAddress.toString().c_str());
   setPacketFilter(filter);
 
   m_socket->async_read_some(boost::asio::null_buffers(),
diff --git a/daemon/face/ethernet.hpp b/daemon/face/ethernet.hpp
index a9b640d..b21f509 100644
--- a/daemon/face/ethernet.hpp
+++ b/daemon/face/ethernet.hpp
@@ -46,7 +46,7 @@
 class Address : public boost::array<uint8_t, ADDR_LEN>
 {
 public:
-  /// Constructs a null Ethernet address (00-00-00-00-00-00)
+  /// Constructs a null Ethernet address (00:00:00:00:00:00)
   Address();
 
   /// Constructs a new Ethernet address with the given octets
@@ -60,7 +60,7 @@
   /// Copy constructor
   Address(const Address& address);
 
-  /// True if this is a broadcast address (FF-FF-FF-FF-FF-FF)
+  /// True if this is a broadcast address (ff:ff:ff:ff:ff:ff)
   bool
   isBroadcast() const;
 
@@ -68,7 +68,7 @@
   bool
   isMulticast() const;
 
-  /// True if this is a null address (00-00-00-00-00-00)
+  /// True if this is a null address (00:00:00:00:00:00)
   bool
   isNull() const;
 
@@ -76,14 +76,14 @@
    * @brief Converts the address to a human-readable string
    *
    * @param sep A character used to visually separate the octets,
-   *            usually a dash (the default value) or a colon
+   *            usually ':' (the default value) or '-'
    */
   std::string
-  toString(char sep = '-') const;
+  toString(char sep = ':') const;
 
   /**
    * @brief Creates an Address from a string containing an Ethernet address
-   *        in hexadecimal notation, with colons or dashes as separators
+   *        in hexadecimal notation, with colons or hyphens as separators
    *
    * @param str The string to be parsed
    * @return Always an instance of Address, which will be null
@@ -93,7 +93,7 @@
   fromString(const std::string& str);
 };
 
-/// Returns the Ethernet broadcast address (FF-FF-FF-FF-FF-FF)
+/// Returns the Ethernet broadcast address (ff:ff:ff:ff:ff:ff)
 inline Address
 getBroadcastAddress()
 {
diff --git a/tests/face/ethernet-address.cpp b/tests/face/ethernet-address.cpp
index 02f6918..92626b2 100644
--- a/tests/face/ethernet-address.cpp
+++ b/tests/face/ethernet-address.cpp
@@ -39,13 +39,13 @@
 
 BOOST_AUTO_TEST_CASE(ToString)
 {
-  BOOST_CHECK_EQUAL(ethernet::Address().toString(),
+  BOOST_CHECK_EQUAL(ethernet::Address().toString('-'),
                     "00-00-00-00-00-00");
-  BOOST_CHECK_EQUAL(ethernet::getBroadcastAddress().toString(':'),
+  BOOST_CHECK_EQUAL(ethernet::getBroadcastAddress().toString(),
                     "ff:ff:ff:ff:ff:ff");
-  BOOST_CHECK_EQUAL(ethernet::Address(0x01, 0x23, 0x45, 0x67, 0x89, 0xAB).toString(),
+  BOOST_CHECK_EQUAL(ethernet::Address(0x01, 0x23, 0x45, 0x67, 0x89, 0xAB).toString('-'),
                     "01-23-45-67-89-ab");
-  BOOST_CHECK_EQUAL(ethernet::Address(0x01, 0x23, 0x45, 0x67, 0x89, 0xAB).toString(':'),
+  BOOST_CHECK_EQUAL(ethernet::Address(0x01, 0x23, 0x45, 0x67, 0x89, 0xAB).toString(),
                     "01:23:45:67:89:ab");
 }
 
diff --git a/tests/face/ethernet.cpp b/tests/face/ethernet.cpp
index 706a697..d27fda4 100644
--- a/tests/face/ethernet.cpp
+++ b/tests/face/ethernet.cpp
@@ -118,7 +118,7 @@
   BOOST_CHECK(!face->isOnDemand());
   BOOST_CHECK_EQUAL(face->isLocal(), false);
   BOOST_CHECK_EQUAL(face->getRemoteUri().toString(),
-                    "ether://" + ethernet::getDefaultMulticastAddress().toString(':'));
+                    "ether://" + ethernet::getDefaultMulticastAddress().toString());
   BOOST_CHECK_EQUAL(face->getLocalUri().toString(),
                     "dev://" + m_interfaces.front()->name);
 
