switch to a more unified abstraction layer. ugh.