ported to smp