refactor part #3