add upload method
add DI
add upload functionality