this took forever