Working on splitting into multiple files, more organization is needed but functionality is there.