Added a lot of new functionalities