enhanced: expose each hook for individual use
enhanced: extracting to seperate module
Merge branch 'feature/enhanced'