initial setup, core framework