{ > Ok I am playing and trying to get a unit to do this stuff > AddFunction( fn : string); (* add a function name to the loop *) > RemoveFuction( fn : string); ReadyLoop; StartLoop; EndLoop; ClearLoop; > basicly the statloop will run ALL the AddFunction'ed functoins til the > code hits a EndLoop; You could have an array of procedures/functions... thus: } Type MyFunction:Function (X,Y,Z:Byte; R:Real; S:String; Var W:Word):String; {Create exactly what you need. You probibly only want function:Boolean or something} Var Funcs:Array[1..20] Of MyFunction; FuncsCount:Byte; {$F+} Function Example_My_Func(X,Y,Z:Byte; R:Real; S:String; Var W:Word):String; Begin {Any code here!} Example_My_Func:=S+'!'; End; {$F-} Procedure Add_Function(Func:MyFunction); Begin Inc(FuncsCount); Funcs[FuncsCount]:=Func; End; Procedure Call_All_Funcs; Var L:Byte; A_Word:Word; Begin For L:=1 To FuncsCount Do Writeln(Funcs[FuncsCount](1,2,3,1.55,'Yay',A_Word)); End; Begin FuncsCount:=0; {Initialisation} Add_Function(@Example_My_Func); {<= Not sure if the '@' symbol is needed} Call_All_Funcs; {Dont need to remove them or anything.} End.