redundant if, add canWarp()