One handler should be registered for one or more keys, using linked_prt pointer here is to release handlers in a right way, since this smart pointer will count references and release the pointer when none refering to it.