ActiveSupport::Memoizable with a few enhancements
