basic structure and some core functionality