PRG design pattern