fleshed out everything except methods that use update. please check if anything is wrong...