button factory, step 1