diff --git a/utils/misc/src/test/java/org/onlab/packet/dhcp/Dhcp6RelayTest.java b/utils/misc/src/test/java/org/onlab/packet/dhcp/Dhcp6RelayTest.java
index 79b9a46..4942108 100644
--- a/utils/misc/src/test/java/org/onlab/packet/dhcp/Dhcp6RelayTest.java
+++ b/utils/misc/src/test/java/org/onlab/packet/dhcp/Dhcp6RelayTest.java
@@ -21,7 +21,6 @@
 import com.google.common.collect.Lists;
 import com.google.common.io.Resources;
 
-import org.apache.commons.io.Charsets;
 import org.junit.Test;
 import org.onlab.packet.DHCP6;
 import org.onlab.packet.Ethernet;
@@ -32,6 +31,7 @@
 
 import java.util.List;
 
+import static java.nio.charset.StandardCharsets.US_ASCII;
 import static org.junit.Assert.*;
 
 /**
@@ -89,7 +89,7 @@
         Dhcp6Option option = relayMsg.getOptions().get(0);
         assertEquals(option.getCode(), DHCP6.OptionCode.SUBSCRIBER_ID.value());
         assertEquals(option.getLength(), 10);
-        assertArrayEquals(option.getData(), SERVER_IP.toString().getBytes(Charsets.US_ASCII));
+        assertArrayEquals(option.getData(), SERVER_IP.toString().getBytes(US_ASCII));
 
         option = relayMsg.getOptions().get(1);
         assertEquals(option.getCode(), DHCP6.OptionCode.RELAY_MSG.value());
@@ -205,7 +205,7 @@
         Dhcp6Option subscriberId = new Dhcp6Option();
         subscriberId.setCode(DHCP6.OptionCode.SUBSCRIBER_ID.value());
         subscriberId.setLength((short) 10);
-        subscriberId.setData(SERVER_IP.toString().getBytes(Charsets.US_ASCII));
+        subscriberId.setData(SERVER_IP.toString().getBytes(US_ASCII));
 
         relayMsg.setOptions(ImmutableList.of(subscriberId, relayOption));
 
@@ -408,7 +408,7 @@
         Dhcp6Option option = relayMsg.getOptions().get(0);
         assertEquals(option.getCode(), DHCP6.OptionCode.SUBSCRIBER_ID.value());
         assertEquals(option.getLength(), 10);
-        assertArrayEquals(option.getData(), SERVER_IP.toString().getBytes(Charsets.US_ASCII));
+        assertArrayEquals(option.getData(), SERVER_IP.toString().getBytes(US_ASCII));
 
         option = relayMsg.getOptions().get(1);
         assertEquals(option.getCode(), DHCP6.OptionCode.RELAY_MSG.value());
@@ -550,7 +550,7 @@
         Dhcp6Option subscriberId = new Dhcp6Option();
         subscriberId.setCode(DHCP6.OptionCode.SUBSCRIBER_ID.value());
         subscriberId.setLength((short) 10);
-        subscriberId.setData(SERVER_IP.toString().getBytes(Charsets.US_ASCII));
+        subscriberId.setData(SERVER_IP.toString().getBytes(US_ASCII));
 
         Dhcp6RelayOption relayOption = new Dhcp6RelayOption();
         relayOption.setPayload(relaiedDhcp6);
