add caller model and getCaller function