new SMP implementation