hook feature. Closes #29