Added a full testing suite to ensure changes don't break anything.