Why is this an interface and not a class?