I personally keep my units until i am very sure the functions in them are running perfectly. This is very helpful for debugging. When my program appears complete, I convert my units to DLL's. When many users are using your software, it is much easier to send them an updated DLL than to recompile the program (using the units). As long as the function headers remain the same, you need only replace the DLL file. Another advantage of a DLL, other developement tools, example C++, can access those function in the DLL's.