add substitude function