Prof pages

Ready for a review, some UI elements may be changed but the core seems good. 

Closes #142
Please remove the if-statement and just have `this.numShown = options.numShown`. This will have the same effect if `options.numShown` is undefined and will have the correct behaviour if `options.numShown` turns out to be `0` (which evaluates to falsey).