implemented as 2 instances of the same class