Added a lot of functionnality