add register/unregister function