Rewrote the class, planning more features