don't rely on CGFloat to be there!