Working benchmark, needs comments and improvement