all the main stuff