Tiding up the code a bit

- Removing regions
- Adding brackets to if and else
- Making public instead of internal so it can be extended more easily
- Using build in /// Summary instead of /* */
- Making baseclass abstract