Refactored uploader to its own component