a better version for multiple solutions. still needs a refactoring