made the homogoeneous self dual version