need to make portable between linux/embedded/osx