Components have been created to address the functional requirements of typical architectural layers of software applications, viz. User Interface Layer, Application layer and Database layer. See Technical Architecture for more details. Low level components from one or more layers are put together to form functionally cohesive higher-level components. These are then put together to form higher level 'Assemblies' and 'Sub-systems'. The components have been packaged as Java beans. They are also available as class libraries.