Some of this works, not all of it but a good start