Reimplemented in Ruby