Refactored Aggregate to allow arrays and pointers of arbitrary depth