Not finished, and I'm not quite happy with this yet, but you get the idea: