many updates to make it work