make KKServiceListener abstract class