implemented aggregate