Either types separated in two classes and an interface