add hooks
add hooks
almost done