The Video Store Kata but with more requirements, and also trying an even more decoupled approach :)