Implemement most functionalities