Zayd Abdullah wrote: > So the reason bottles_of_beer is attr_accessor is because I have to access > it to change the value of it, and bottle_word and one_word are attr_readers, > because those values never change? Short term, use accessors to get to your instance variables. Long term, learn the principle "tell don't ask." Don't ask your object for its variables, then use them. Instead, tell the object what to do, and let it use its variables to do it. In your sample program, each phase (checking the beer bottle count, singing about one bottles, decrementing the count) could have ran inside a method in Bottles. -- Phlip