This wasn't originally created by me, but due to incompatibility issues, I remade it slightly so it can be used with the current branch of servuo.