almost done, need to rewrite other functions and fix number] bug