update tile only when needed