Work in progress, try again in the next few months (I'm lazy)...