this took a long time to edit