move small clases into their own files and grouped some files by responsibility in directories