implement call such that it can handle partial evaluation