make precache method a private sub instead