Associate a contact with multiple accounts?

Associate a contact with multiple accounts?

Many of our contacts will have relationships with several firms.  They will be the CEO of one company, and sit on the board of directors of a couple of different companies, possibly associated with a non-profit foundation, etc...and many times all of these are potential clients and this individual may be our main contact at all of the firms.  What is the best way to associate a contact with multiple accounts/companies?  I thought I had seen a discussion of this before, but I searched the forum and couldn't find it again, and I'm hoping other users might have found good work arounds.

Also, somewhat related.  When a contact moves to another firm is there a way to associate him with the new account, but not lose the history of the old account he was with?

Thanks for your help.