add asInstance func