add initial support of smp