diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/GroupViewMessageHandler.java b/web/gui/src/main/java/org/onosproject/ui/impl/GroupViewMessageHandler.java
index d7e1047..c7d539b 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/GroupViewMessageHandler.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/GroupViewMessageHandler.java
@@ -103,7 +103,7 @@
         }
 
         private final class BucketFormatter implements CellFormatter {
-            private static final String COMMA = ", ";
+            private static final String BREAK = "<br>";
 
             @Override
             public String format(Object value) {
@@ -121,18 +121,11 @@
                             .append(b.packets())
                             .append(" Actions: ")
                             .append(b.treatment().allInstructions())
-                            .append(COMMA);
+                            .append(BREAK);
                 }
-                removeTrailingComma(sb);
 
                 return sb.toString();
             }
-
-            private StringBuilder removeTrailingComma(StringBuilder sb) {
-                int pos = sb.lastIndexOf(COMMA);
-                sb.delete(pos, sb.length());
-                return sb;
-            }
         }
     }
 }
diff --git a/web/gui/src/main/java/org/onosproject/ui/impl/LinkViewMessageHandler.java b/web/gui/src/main/java/org/onosproject/ui/impl/LinkViewMessageHandler.java
index 9d4608a..a311b2d 100644
--- a/web/gui/src/main/java/org/onosproject/ui/impl/LinkViewMessageHandler.java
+++ b/web/gui/src/main/java/org/onosproject/ui/impl/LinkViewMessageHandler.java
@@ -125,7 +125,7 @@
         }
 
         private String linkDir(BiLink link) {
-            return link.two != null ? "A <--> B" : "A --> B";
+            return link.two != null ? "A &harr; B" : "A &rarr; B";
         }
     }
 }
diff --git a/web/gui/src/main/webapp/app/view/group/group.html b/web/gui/src/main/webapp/app/view/group/group.html
index ad1e8a1..3bc28c7 100644
--- a/web/gui/src/main/webapp/app/view/group/group.html
+++ b/web/gui/src/main/webapp/app/view/group/group.html
@@ -62,7 +62,8 @@
                 </tr>
                 <tr class="ignore-width"
                     ng-repeat-end ng-repeat-done>
-                    <td class="buckets" colspan="6">{{group.buckets}}</td>
+                    <td class="buckets" colspan="6"
+                        ng-bind-html="group.buckets"></td>
                 </tr>
             </table>
         </div>
diff --git a/web/gui/src/main/webapp/app/view/group/group.js b/web/gui/src/main/webapp/app/view/group/group.js
index f863609d..a0deece 100644
--- a/web/gui/src/main/webapp/app/view/group/group.js
+++ b/web/gui/src/main/webapp/app/view/group/group.js
@@ -48,6 +48,14 @@
                 query: params
             });
 
+            $scope.$watch('tableData', function () {
+                if (!fs.isEmptyObject($scope.tableData)) {
+                    $scope.tableData.forEach(function (group) {
+                        group.buckets = $sce.trustAsHtml(group.buckets);
+                    });
+                }
+            });
+
             $log.log('OvGroupCtrl has been created');
         }]);
 }());
diff --git a/web/gui/src/main/webapp/app/view/link/link.html b/web/gui/src/main/webapp/app/view/link/link.html
index ab20b63..e644593 100644
--- a/web/gui/src/main/webapp/app/view/link/link.html
+++ b/web/gui/src/main/webapp/app/view/link/link.html
@@ -57,7 +57,7 @@
                     <td>{{link.one}}</td>
                     <td>{{link.two}}</td>
                     <td>{{link.type}}</td>
-                    <td>{{link.direction}}</td>
+                    <td ng-bind-html="link.direction"></td>
                     <td>{{link.durable}}</td>
                 </tr>
             </table>
diff --git a/web/gui/src/main/webapp/app/view/link/link.js b/web/gui/src/main/webapp/app/view/link/link.js
index d21d7dc..fcf2a83 100644
--- a/web/gui/src/main/webapp/app/view/link/link.js
+++ b/web/gui/src/main/webapp/app/view/link/link.js
@@ -23,14 +23,22 @@
 
     angular.module('ovLink', [])
     .controller('OvLinkCtrl',
-        ['$log', '$scope', 'TableBuilderService',
+        ['$log', '$scope', '$sce', 'FnService', 'TableBuilderService',
 
-        function ($log, $scope, tbs) {
+        function ($log, $scope, $sce, fs, tbs) {
             tbs.buildTable({
                 scope: $scope,
                 tag: 'link'
             });
 
+            $scope.$watch('tableData', function () {
+                if (!fs.isEmptyObject($scope.tableData)) {
+                    $scope.tableData.forEach(function (link) {
+                        link.direction = $sce.trustAsHtml(link.direction);
+                    });
+                }
+            });
+
             $log.log('OvLinkCtrl has been created');
         }]);
 }());
