revise based on the comments...