pretty much convinced that this is an ok interface