improve step 2 & 5