added some functional