make the codes better!