Refactor: I put all the cache logic inside an strategy. I added the realtimeStrategy just for debug or in case it becomes handy. The surface looks kind of empty, but maybe it will make more sense when physics is added