Implemented size modes, improved various functionality, added unit tests to cover 100%.