My final version before submitted finally !!