This might be a little tricky due to async/state in my testing so far. #51 contains commits that has some of this started and later reverted due to bugs.