many functionalities and tests