Started rewriting from the ground up