it's gonna be hard to make this much faster