add new functionalities + fix