port from szezo's IncS ION kernel