Moved all components into a hooks system with a simple interface