internal join fn as wrapper around path.join