Images should be pulled from a working system.
Completely unattended installs were a must.
The unattended install system had to be able to repartition the destination drive(s).
One of the main design goals was ease of use. This had to be a tool that could be used by a system administrator that didn't necessarily understand how it worked.
It was also necessary for it to install easily and quickly so that it could be useful right away without alot of site specific customization.
Images should be stored as normal files to allow for incremental upgrades as opposed to "dd" style block level images of physical disks.
It had to be independent of any and all packaging systems (such as RPM) in order to easily accomodate different distributions.
It should be able to store multiple images, for different types of systems and for revision control.
It must provide a mechanism for unattended install clients to know which image to install.
Once a client was installed, it should be able to update itself to a new or updated image.
It should have a command line interface that lent itself well to being wrapped with a GUI.