Not bad, but need to be more clean