fix async
allow empty dest
add keywords