Yeah, maybe we should split them to multiple methods: `register(Provider|Action|Maker)`