OK, better version, tested on python 2.6/7 - 2.6 needs multi-inheritance, but in different order