simple cache component