why is a self cast required?