diff --git a/core/api/src/main/java/org/onosproject/net/flow/instructions/PiInstruction.java b/core/api/src/main/java/org/onosproject/net/flow/instructions/PiInstruction.java
index 3558bd5..180a521 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/instructions/PiInstruction.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/instructions/PiInstruction.java
@@ -75,9 +75,9 @@
     public String toString() {
         switch (tableAction.type()) {
             case ACTION_GROUP_ID:
-                return "GROUP:" + ((PiActionGroupId) tableAction).id().toString();
+                return "GROUP:0x" + Integer.toHexString(((PiActionGroupId) tableAction).id());
             case GROUP_MEMBER_ID:
-                return "GROUP_MEMBER:" + ((PiActionGroupMemberId) tableAction).id().toString();
+                return "GROUP_MEMBER:0x" + Integer.toHexString(((PiActionGroupMemberId) tableAction).id());
             default:
                 return tableAction.toString();
         }
diff --git a/core/api/src/main/java/org/onosproject/net/pi/model/PiPipelineInterpreter.java b/core/api/src/main/java/org/onosproject/net/pi/model/PiPipelineInterpreter.java
index 9206f5c..cada0f9 100644
--- a/core/api/src/main/java/org/onosproject/net/pi/model/PiPipelineInterpreter.java
+++ b/core/api/src/main/java/org/onosproject/net/pi/model/PiPipelineInterpreter.java
@@ -64,6 +64,10 @@
      * @param flowRuleTableId a numeric table ID
      * @return PI table ID
      */
+    // FIXME: remove this method. The only place where this mapping seems useful
+    // is when using the default single table pipeliner which produces flow
+    // rules for table 0. Instead, PI pipeliners should provide a mapping to a
+    // specific PiTableId even when mapping to a single table.
     Optional<PiTableId> mapFlowRuleTableId(int flowRuleTableId);
 
     /**
@@ -75,6 +79,7 @@
      * @param piTableId PI table ID
      * @return numeric table ID
      */
+    // FIXME: as above
     Optional<Integer> mapPiTableId(PiTableId piTableId);
 
     /**
diff --git a/core/api/src/main/java/org/onosproject/net/pi/runtime/PiMulticastGroupEntry.java b/core/api/src/main/java/org/onosproject/net/pi/runtime/PiMulticastGroupEntry.java
index 6a848ac..7bb4c2d 100644
--- a/core/api/src/main/java/org/onosproject/net/pi/runtime/PiMulticastGroupEntry.java
+++ b/core/api/src/main/java/org/onosproject/net/pi/runtime/PiMulticastGroupEntry.java
@@ -92,7 +92,7 @@
     @Override
     public String toString() {
         return MoreObjects.toStringHelper(this)
-                .add("groupId", groupId)
+                .add("groupId", "0x" + Integer.toHexString(groupId))
                 .add("replicas", replicas)
                 .toString();
     }
diff --git a/core/api/src/main/java/org/onosproject/net/pi/runtime/PiPreReplica.java b/core/api/src/main/java/org/onosproject/net/pi/runtime/PiPreReplica.java
index b661d27..4f65e4d 100644
--- a/core/api/src/main/java/org/onosproject/net/pi/runtime/PiPreReplica.java
+++ b/core/api/src/main/java/org/onosproject/net/pi/runtime/PiPreReplica.java
@@ -84,6 +84,6 @@
 
     @Override
     public String toString() {
-        return format("%s:%d", egressPort, instanceId);
+        return format("%s:0x%s", egressPort, Integer.toHexString(instanceId));
     }
 }
