license
split "ui" and "upload' into separate modules