added subclass ptr coercions and void-pointer autocoerce like C