initial setup, boilerplate and other bits