some improvments
API change