This needs to be in a separate package for now due to import cycles. Co-authored-by: Samuel Gélineau <gelisam@gmail.com>