added exhaustive tests