much more flexible article upload