Lot's of stuff stolen from markschabacker.github.com  (plus added categories)