revised Version. Still not Stable