study of practical oo design in ruby