Extracted classes into own files. Added some new ones.