add on_* functionality.