To work OO with procedures, you can make something like List.pas. This has a function CreateList(): Pointer;
From this on you can make functions like
ListAdd(ListPointer: Pionter; item: Pointer);
ListRemove(ListPointer: Pionter; item: Pointer);
List...();