finish basic functionalities