1. A method of operating a software tool on a computing device, the computing device comprising a processor, the method comprising the acts: operating the processor to a) provide a plurality of application programs using a full functionality framework comprising a plurality of framework components implemented in software, wherein each of the plurality of framework components provides a function; b) automatically determine a frequency of use of each of the plurality of framework components in the plurality of application programs, the frequency of use of a selected component based on a number of times the selected component is used in the plurality of application programs; and c) construct a compact framework with reduced functionality having a sub-set of the framework components, the framework components in the sub-set selected based on the frequency of use determined in the act b), wherein at least one framework component from the full functionality framework is omitted from the compact framework with reduced functionality, wherein the compact framework does not perform the function of the at least one omitted framework component, wherein the compact framework has fewer namespaces and/or fewer framework components within at least one namespace as compared to the full functionality framework.