extern C not necessary