changed handler interface to abstract class