added substitute method