implement call method