support custom root