public Either <Colour[], UserOption> TakeInput() { while (true) { var userInput = _inputReceiver.GetUserInput(); if (string.Equals(userInput, UserOption.Quit.ToString(), StringComparison.CurrentCultureIgnoreCase)) { return(UserOption.Quit); } try { var userAnswer = InputColourParser.ParseFromString(userInput); _inputArrayLengthValidator.ValidateUserInput(userAnswer); return(userAnswer); } catch (ParseException e) { _errorHandler.DisplayParseExceptionMessage(e); } catch (LengthException e) { _errorHandler.DisplayLengthExceptionMessage(e); } } }