cjs compatible, not exclusive