Based on C language