fix in special case
throw when it doesn't work