Block a user
Factor out all non-generic implementations
This branch will not be merged. Instead, the repository will be archived, and replaced by four other repositories structures as follows: