1. A method of extending the functionality of a computer software application program at run time, comprising: determining, by an application extension point within said application program, that a filter aware extension registry should be used when finding extension modules attached to said application extension point; obtaining, by said application extension point, said filter aware extension registry; calling, by said filter aware extension registry, a filter extension, wherein said filter extension is one of a plurality of filter extensions attached to a filter extension point of said filter aware extension registry; determining, by said filter extension in response to said calling by said filter aware extension registry, a set of extension modules attached to said application extension point responsive to at least one current context attribute, wherein said set of extension modules attached to said application extension point is a subset of all extension modules attached to said application extension point; and passing said set of extension modules attached to said application extension point from said filter extension to said application extension point.