Using various versions I have put together this