step 3: views and routing