Rewrote the GL fireworks version