almost done, need validation & better hints