refactored #46 without odd enumerator for simplicity