diff --git a/SMPDataFlowAnalysis.h b/SMPDataFlowAnalysis.h
index d552cb1463facefd0157eb3634e84d90c9e04534..aede6eb2267264a56d740abc3e2170df48b459ec 100644
--- a/SMPDataFlowAnalysis.h
+++ b/SMPDataFlowAnalysis.h
@@ -118,10 +118,14 @@ enum SMPitype {
 //  at all, which is even better. In order to emit these annotations, we
 //  will track all operands in a function as to their basic SMP types.
 enum SMPOperandType { // What type is a given register or memory operand?
-	UNINIT,      // Operand type not yet analyzed
+	UNINIT,      // Operand type not yet analyzed; type lattice top
 	NUMERIC,     // Definitely holds non-pointer value (char, int, etc.)
-	POINTER,     // Definitely holds an address
-	UNKNOWN      // Might hold an address, might not (Bad!)
+	CODEPTR,     // Definitely holds a code address
+	POINTER,     // Definitely holds a data address
+	STACKPTR,    // Definitely holds a stack data address (refinement of POINTER)
+	GLOBALPTR,   // Definitely holds a global static data address (refinement of POINTER)
+	HEAPPTR,     // Definitely holds a heap data address (refinement of POINTER)
+	UNKNOWN      // Might hold an address, might not (Bad!); type lattice bottom
 };
 
 class DefOrUse {