Re-organizes code and adds a new sub-module for dataset loading (about time\!