still mulling over how to propogate errors...