finished all except returning function.