the code in this method should all be in `__init__`