Unfinished, but works with the example in the Main