Weekend update. Still has a few bugs.