Completely rewrote the project.