add test
imprve file mode change