added lots of stuffs