Initial implementation fully working for Linux.