use more abstract collections