The primary contribution of ACME is that it defines a vocabulary for talking about architectures. Other features include an extension mechanism enabling tool specific sub languages to be imbedded in it. For example, a simulator might wish to deal with timing information. ACME features generics, families and types for defining architectural styles. Further, ACME is defined in such a way that ACME descriptions can be converted into first order logic suitable for use by automatic reasoning tools such as type checkers.