Changed slot to interface and implemented its subclasses