fixed non-inline function