subsequently edited for clarity