procedure DoX(AnotherBoolParam : B1) begin // a lot of code that verifies something (1-2 screens) end; function DoY(AnotherIntParam : Inteegr) : Float procedure // a lot of code that calculates something (1-2 screens) end procedure DoZ() begin // do something important (1-2 screens) end function Foo (BoolParam : B1; IntParam : Integer; AListParam : TObjectList) : S32; begin // Foo() doesn't seem so complex anymore DoX(BoolParam); DoY(IntParam); DoZ(); end;