uses activesupport internal method