add Castable interface