This actually took forever