Extract Module
Multiple methods have been extracted into modules emulating a class hierarchy.
The modifications are similar to that of unavailable.rb applied in the previous commit.