John. The inheritance and polymorphism is great, well explained, will be v. helpful for beginners I'm sure. One thing, maybe you know the answer to (I can't be bothered to test) is if TEntity doesn't have a certain method but TPlayer has Method Fire, and you have done: p:TEntity = New TPlayer, then you say p.Fire will this fail because the method doesn't exist in TEntity, even though it exists in TPlayer? It probably should fail, because it should follow the same rules as for fields, yes?