separated hooks, changed some protection levels