factory design pattern part1