add some paranoia -- fo can be null if errors occur