Big post up. Hopefully there are not too many syntax errors.