The basic technique. The list manipulation code must be independent of the user's types. We introduce a new type, called Node_Type, containing just the forward and back pointers and anything else that is common between all types of lists. The genetic list module is implemented in terms of Node_Type without reference to any user types. The first component of each user type must be of type Node_Type.