Update from better implemention