First pass at upload - will need more work