* modified according to code review.