init
random stuff added
random stuff deleted
thread safe made