works in C