Updated based on Jesper's feedback. Simple changes where implemented, and todo notes were added for larger strutural changes.