Freelancer:
ffrauss
first version
let me know your opinion for revision