step 3: compile