completed basic functionalities