semi working
updating