I think finished core functionalities