added identity function