+:even&:odd + some refactor