[WIP] refactor - built inheritance with hooks and tests