pin setuptools=7.0
use implementer decorator for better readability