Add testing in, make things promise

I've added testing to this, not sure at all this is how it should be.

@kevinhodges @philmeehan @panicnot