working hooks, need to fill in l8er