Prof pages

Ready for a review, some UI elements may be changed but the core seems good. 

Closes #142
Again, no need to create an intermediate list before passing to `set()`.