refactor widget for using upload pattern from mockup