*updated FrameWork thanks to Dyox