original API, use a bound method