refactor for absoulte path support