hooks initial implementation