started on abstraction of file uploader