fleshed out interface a bit more
finished interface