cache method can accept proc too as an argument