finished alomost except validation.