all specs written. still need to actually write tests.