Add acts_as_cushion functionality and test it