@dodgebros
Something I just recently learned through experiment which might be of a little help to you...
Pascal units don't seem to like circular references.
i.e., If you reference 'Unit2' inside 'Unit1', then you cannot reference 'Unit1' inside 'Unit2'.
When I say "reference", I mean you can't put the name in the 'Uses' section of the module.
A small number of programming languages do allow for circular references between modules. But, as I found the hard way, the Pascal compiler throws a temper tantrum when that is done.
In many of my programs, the routines in my modules "communicate" back and forth to each other. In order to achieve this, I've had to create a "global" module containing the data fields (variables and constants) and routines (procedures, functions, and event handlers) which 'Unit1' and 'Unit2' both utilize. Both 'Unit1' and 'Unit2' reference 'UMain' (global unit), but they do not reference each other, and 'UMain' doesn't reference any other modules except the default (Uses Classes, SysUtils;).