moved S3MFile struct into it's own file, and seperated out structs