Moved some logic into separate classes. Added ability to ignore casing in files