Enhancement: Renamed some files, re-factored, and added more documentation.