add pry gem
start refactoring
use objects instead of abstract class