app: add hooks