Revised based on some feedback.