Split up classes to separate files.

This is an example plugin and it should serve as a good example :)
Proper visibility definitions.
Code cleanup.