Giving this fork a go. Here's a start