added some new functional