inherit from an interface before overriding the functions