My Code , take it if necessary