If you're looking for possible alternatives, I find Germany's model not too bad: two votes, one for per-district representatives and one for parties which is evaluated proportionally. Not perfect, but works out in practise.
I'd like one mode change though: instead of giving one vote per list, I'd like to allocate an arbitrary number of votes per list, but you can give at most one vote per candidate or party. That way you can vote for blocks of parties/candidates, or even vote against somebody by voting for everybody execpt that one party/candidate.
This would remove a lot of tactical debate if you're vasting your vote on candidates/parties who don't have huge chances for success.