Dev zch

@ByzanTine 
What's this? why not dynamic_pointer_cast?