Major refactoring 
> inline suggestions where possible
> const correctness
> formatting