improve chpwd()