Initial commit of program by Will Kirkby