copy from non-gitted project
add cancel handler