reorganized to be linux friendly