first implementation of invoke