add hooks system