diff --git a/src/main/java/org/ice4j/ice/Candidate.java b/src/main/java/org/ice4j/ice/Candidate.java
index 3a8f373b..d74e6901 100644
--- a/src/main/java/org/ice4j/ice/Candidate.java
+++ b/src/main/java/org/ice4j/ice/Candidate.java
@@ -758,7 +758,18 @@ public TransportAddress getRelatedAddress()
     @Override
     public String toString()
     {
-        StringBuilder buff = new StringBuilder("candidate:");
+        return "candidate:" + toAttributeValue();
+    }
+
+    /**
+     * Returns a String represnation of this Candidate
+     * suitable for use as an SDP attribute value.
+     *
+     * @return a String representing th SDP attribute value of this
+     * Candidate.
+     */
+    public String toAttributeValue() {
+        StringBuilder buff = new StringBuilder();
 
         buff.append(getFoundation());
         buff.append(" ").append(getParentComponent().getComponentID());
@@ -776,6 +787,10 @@ public String toString()
             buff.append(" rport ").append(relAddr.getPort());
         }
 
+        if(getTcpType() != null) {
+            buff.append(" tcptype ").append(getTcpType());
+        }
+
         return buff.toString();
     }
 
diff --git a/src/main/java/org/ice4j/ice/sdp/CandidateAttribute.java b/src/main/java/org/ice4j/ice/sdp/CandidateAttribute.java
index 919a13da..810727f0 100644
--- a/src/main/java/org/ice4j/ice/sdp/CandidateAttribute.java
+++ b/src/main/java/org/ice4j/ice/sdp/CandidateAttribute.java
@@ -115,29 +115,7 @@ public boolean hasValue()
      */
     public String getValue()
     {
-        StringBuffer buff = new StringBuffer();
-
-        buff.append(candidate.getFoundation());
-        buff.append(" ").append(
-            candidate.getParentComponent().getComponentID());
-        buff.append(" ").append(candidate.getTransport());
-        buff.append(" ").append(candidate.getPriority());
-        buff.append(" ").append(
-            candidate.getTransportAddress().getHostAddress());
-        buff.append(" ").append(
-            candidate.getTransportAddress().getPort());
-        buff.append(" typ ").append(
-            candidate.getType());
-
-        TransportAddress relAddr = candidate.getRelatedAddress();
-
-        if (relAddr != null)
-        {
-            buff.append(" raddr ").append(relAddr.getHostAddress());
-            buff.append(" rport ").append(relAddr.getPort());
-        }
-
-        return buff.toString();
+        return candidate.toAttributeValue();
     }
 
     /**