Implemented various generation strategies and updated tests.