added some enhancement