add types
function pointer types
fix types
WARNING