separation of definition and implementation part2