EDITED to reflect the most recent changes