add Option and some functions