Redesign. Added comments.