modified to allow simple compile on other systems
forgot to add to original commit
added includes to allow cross machine compile
forgot to add commit
changed headers
forgot from first commits
forgotten from initial commit