js hooks, adding full workflow