full working functionalities