added abstract class Aggregate