updated fully working4