implement hook and event
change Hook from an interface to a normal class