moved benchmark to own file
split up into three stages