working M:M model