skip swp
add mut to &self,works
use cargo