have to implement spin projection