Checklist The title and commit message(s) are descriptive. Small commits made to fix your PR have been squashed to avoid history pollution. Tests have been added for new features or bug fixes. API of new functions and classes are documented. Description