Rewrote the backend to the bullets so that the internal types were easier to work with.