add a better solution