Many properties and methods needed to achieve agency

Many properties and methods needed to achieve agency