Refined a bit. Mostly Done