A lot of rules, but worth it