add force option
manage path is file
normalize path
add 'is file' case
improved error handling