New Aspect() model and Client() refactored to use it