Rewrote a lot