Scrapped existing progress, started over with slightly more object-oriented model.