copied implemented type from haxe3 std lib