tested for linux (ubuntu), unfinish for mac and win