basic implementation for Linux