anchor.diff:          static member FieldDefinitions =
               [define? SpriteImage { PackageName = DefaultPackageName; AssetName = "Image3" }]
   
  -        override facet.GetRenderDescriptors (entity : Entity, world) =
  -            if entity.Visible && Camera.inView3 entity.ViewType entity.Position entity.Size world.State.Camera then
  +        override facet.GetRenderDescriptors (entityRep : EntityRep, world) =
  +            if  entityRep.GetVisible world &&
  +                Camera.inView3 (entityRep.GetViewType world) (entityRep.GetPosition world) (entityRep.GetSize world) world.State.Camera then
                   [LayerableDescriptor
  -                    { Depth = entity.Depth
  +                    { Depth = entityRep.GetDepth world
                         LayeredDescriptor =
                           SpriteDescriptor
  -                            { Position = entity.Position
  -                              Size = entity.Size
  -                              Rotation = entity.Rotation
  -                              ViewType = entity.ViewType
  +                            { Position = entityRep.GetPosition world
  +                              Size = entityRep.GetSize world
  +                              Rotation = entityRep.GetRotation world
  +                              ViewType = entityRep.GetViewType world
                                 OptInset = None
  -                              Image = entity.SpriteImage
  +                              Image = entityRep.GetSpriteImage world
                                 Color = Vector4.One }}]
               else []
   
  -        override facet.GetQuickSize (entity : Entity, world) =
  -            match Metadata.tryGetTextureSizeAsVector2 entity.SpriteImage world.State.AssetMetadataMap with
  +        override facet.GetQuickSize (entityRep, world) =
  +            match Metadata.tryGetTextureSizeAsVector2 (entityRep.GetSpriteImage world) world.State.AssetMetadataMap with
               | Some size -> size
               | None -> DefaultEntitySize
   
   [<AutoOpen>]
   module AnimatedSpriteFacetModule =
   
  -    type Entity with
  -
  -        member entity.TileCount = entity?TileCount : int
  -        static member getTileCount (entity : Entity) = entity.TileCount
  -        static member setTileCount (value : int) (entity : Entity) = entity?TileCount <- value
  -        
  -        member entity.TileRun = entity?TileRun : int
  -        static member getTileRun (entity : Entity) = entity.TileRun
  -        static member setTileRun (value : int) (entity : Entity) = entity?TileRun <- value
  -        
  -        member entity.TileSize = entity?TileSize : Vector2
  -        static member getTileSize (entity : Entity) = entity.TileSize
  -        static member setTileSize (value : Vector2) (entity : Entity) = entity?TileSize <- value
  -        
  -        member entity.AnimationStutter = entity?AnimationStutter : int64
  -        static member getAnimationStutter (entity : Entity) = entity.AnimationStutter
  -        static member setAnimationStutter (value : int64) (entity : Entity) = entity?AnimationStutter <- value
  -        
  -        member entity.AnimationSheet = entity?AnimationSheet : AssetTag
  -        static member getAnimationSheet (entity : Entity) = entity.AnimationSheet
  -        static member setAnimationSheet (value : AssetTag) (entity : Entity) = entity?AnimationSheet <- value
  +    type EntityRep with
  +    
  +        member this.GetTileCount world : int = (this.GetXtension world)?TileCount
  +        member this.SetTileCount (value : int) world = this.UpdateXtension (fun xtension -> xtension?TileCount <- value) world
  +        member this.GetTileRun world : int = (this.GetXtension world)?TileRun
  +        member this.SetTileRun (value : int) world = this.UpdateXtension (fun xtension -> xtension?TileRun <- value) world
  +        member this.GetTileSize world : Vector2 = (this.GetXtension world)?TileSize
  +        member this.SetTileSize (value : Vector2) world = this.UpdateXtension (fun xtension -> xtension?TileSize <- value) world
  +        member this.GetAnimationStutter world : int64 = (this.GetXtension world)?AnimationStutter
  +        member this.SetAnimationStutter (value : int64) world = this.UpdateXtension (fun xtension -> xtension?AnimationStutter <- value) world
  +        member this.GetAnimationSheet world : AssetTag = (this.GetXtension world)?AnimationSheet
  +        member this.SetAnimationSheet (value : AssetTag) world = this.UpdateXtension (fun xtension -> xtension?AnimationSheet <- value) world
   
       type AnimatedSpriteFacet () =
           inherit Facet ()
   
  -        static let getOptSpriteInset (entity : Entity) world =
  -            let tile = int (world.State.TickTime / entity.AnimationStutter) % entity.TileCount
  -            let tileI = tile % entity.TileRun
  -            let tileJ = tile / entity.TileRun
  -            let tileX = single tileI * entity.TileSize.X
  -            let tileY = single tileJ * entity.TileSize.Y
  -            let inset = Vector4 (tileX, tileY, tileX + entity.TileSize.X, tileY + entity.TileSize.Y)
  +        static let getOptSpriteInset (entityRep : EntityRep) world =
  +            let tile = int (world.State.TickTime / entityRep.GetAnimationStutter world) % entityRep.GetTileCount world
  +            let tileRun = entityRep.GetTileRun world
  +            let tileSize = entityRep.GetTileSize world
  +            let tileI = tile % tileRun
  +            let tileJ = tile / tileRun
  +            let tileX = single tileI * tileSize.X
  +            let tileY = single tileJ * tileSize.Y
  +            let inset = Vector4 (tileX, tileY, tileX + tileSize.X, tileY + tileSize.Y)
               Some inset
   
           static member FieldDefinitions =
  
positive.code:         override facet.RegisterPhysics (entityRep, world) =
              let bodyProperties = 
                  { BodyId = (entityRep.GetPhysicsId world).BodyId
                    Position = entityRep.GetPosition + entity.Size * 0.5f
                    Rotation = entityRep.GetRotation
                    Shape = getBodyShape entity
                    BodyType = entityRep.GetBodyType
                    Density = entityRep.GetDensity
                    Friction = entityRep.GetFriction
                    Restitution = entityRep.GetRestitution
                    FixedRotation = entityRep.GetFixedRotation
                    LinearDamping = entityRep.GetLinearDamping
                    AngularDamping = entityRep.GetAngularDamping
                    GravityScale = entityRep.GetGravityScale
                    CollisionCategories = Physics.toCollisionCategories entityRep.GetCollisionCategories
                    CollisionMask = Physics.toCollisionCategories entityRep.GetCollisionMask
                    IsBullet = entityRep.GetIsBullet
                    IsSensor = entityRep.GetIsSensor }
              World.createBody address entityRep.GetId bodyProperties world
  
          override facet.UnregisterPhysics (entity, _, world) =
              World.destroyBody entity.PhysicsId world
  
          override facet.PropagatePhysics (address, entity, world) =
              let world = facet.UnregisterPhysics (address, entity, world)
              facet.RegisterPhysics (address, entity, world)
  
  [<AutoOpen>]
  module SpriteFacetModule =
  
      type Entity with
  
          member entity.SpriteImage = entity?SpriteImage : AssetTag
          static member getSpriteImage (entity : Entity) = entity.SpriteImage
          static member setSpriteImage (value : AssetTag) (entity : Entity) = entity?SpriteImage <- value
  
      type SpriteFacet () =
          inherit Facet ()
  
negative.code:              define? AnimationStutter 4L
               define? AnimationSheet { PackageName = DefaultPackageName; AssetName = "Image7" }]
  
          override facet.GetRenderDescriptors (entityRep, world) =
              if  entityRep.GetVisible world &&
                  Camera.inView3 (entityRep.GetViewType world) (entityRep.GetPosition world) (entityRep.GetSize world) world.State.Camera then
                  [LayerableDescriptor
                      { Depth = entityRep.GetDepth world
                        LayeredDescriptor =
                          SpriteDescriptor
                              { Position = entityRep.GetPosition world
                                Size = entityRep.GetSize world
                                Rotation = entityRep.GetRotation world
                                ViewType = entityRep.GetViewType world
                                OptInset = getOptSpriteInset entityRep world
                                Image = entityRep.GetAnimationSheet world
                                Color = Vector4.One }}]
              else []
  
          override facet.GetQuickSize (entityRep, world) =
              entityRep.GetTileSize world
  
  [<AutoOpen>]
  module EntityDispatcherModule =
  