While this is true, you can export the same function/procedure name from 2 different units- and that can bite you in the rear. The way it works is that the last one listed in the "uses" clause ("include" equivalent of Pascal) is the one that has priority. If you want to use the function from the first one you need to actually go use the full identifier of the unit in order to call the first one (unit1name.samefunctionname(blabla parameters). This is notoriously a big bug with 3rd party vendors who want to expand the capability of the general units (looking at you DevExpress) by using the same units name. While I get the over all advantages of doing this on purpose, it also pisses me when I really need the basic one instead of the "enhanced" one.