Let me start by saying, though libertarian in many of my thoughts, I do not belong to any political party, and will likely never will. Political parties, in their current structure, have completely eliminated the middle of the road, common sense ideas from the political spectrum. If you "reach across the aisle" or even endorse a concept by your "rival" party, then you are called out as a RINO or DINO (Republican or Democrat In Name Only) and may eventually be targeted by an even more partisan political hack to roust you from your seat in the primary (with gerrymandering, that tends to be the only way political incumbents are defeated),
When someone who does not belong to any particular party gets candidates at the general election, the choices we are given are 2 "major" candidates that have appeased the most partisan of their party, and "minor" party candidates that in general have very little chance to break the 2 party system that has been stacked against them.
How can we fix this? Open up the primary process system. Put all candidates on the ballot in a nonpartisan blanket primary whenever feasible. Let the top 2 vote getters in the primary move forward to the general election. This forces all candidates to focus their ideas to appease the general public and hopefully allow the best ideas go through. In addition, it can increase voter turnout in the primary process, as the number of independent voters has surged over the past 20 years.
Will it affect the minor parties? Maybe, in a surprisingly positive way. So be it if the top 2 are Republicans, Democrats, Libertarians, Greenies, etc. This should reduce partisanship because politicians will reduce their dependance to party and increase their responsiveness to their constituents.