update but still work in progress