portability and header update