separating the uploading and choosing components