this took forever but i'm happy with the end result