implementing functionalities