1. A method of tailoring the functionality of software by an application manager running on a processor, comprising: determining that a user is requesting access to a software application; determining a set of interfaces for accessing the software application, each interface comprising a form that defines the layout of a set of features; determining a set of maturity sequences associated with the software application; classifying the user into one of a set of maturity levels for each of the set of maturity sequences; determining the set of features of a first interface; determining a feature rule associated with each of the set of features of the first interface, wherein each feature rule comprises an expression associated with a maturity sequence and one maturity level of the set of maturity levels; for each feature of the set of features, determining if the feature should be included in the first interface based on the feature rule associated with the feature, the maturity sequence associated with the feature rule and the maturity level into which the user has been classified for the maturity sequence associated with the feature rule; assembling the first interface, wherein the first interface includes all of the set of features for which it is determined that the feature should be included in the interface; and presenting the first interface to the user.