add ruby version singleton pattern
add ruby version visitor pattern
add ruby version facede pattern