updated with correctnes sofar
fixed dup