Author: Raymond Lame rand