step 0: initial setup