trying to improve the api. not done
improve the api