working on gcc linux compatibility