added some new cool function

still need to unit test