use a pre-casted version of self
don't affect object layout