Prof pages

Ready for a review, some UI elements may be changed but the core seems good. 

Closes #142
The rating is normalized to 0.0 to 1.0. By doing integer division here, you'll only ever get 0 or 1. You need to cast one of the operands to a float so that float division takes place:

`return float(a) / b`