everything seems to be working. need to write a ton of tests