refactored existing tests to use static inner classes to avoid potential name clashes between tests, added a new test