initial commit, cleaned up slightly for distribution