make effect/vp function interface be just (player)