revised source code