basic functionalities implemented and working