Omg what a rules refactoring