some work on stuffs(Untested)