Prof pages

Ready for a review, some UI elements may be changed but the core seems good. 

Closes #142
You don't need a nested if-statement here. Just do this:

```js
if (this.numHidden() === 1) {
  // ...
} else if (this.numHidden() > 0) {
  // ...
}
```