refactored to soupe