Smalltalk'un yeniden yazma motoru (rewrite engine), John Brant ve Don Roberts tarafından Refactoring Browser ile tanıtılan, soyut sözdizimi ağacı (AST) seviyesinde eşleştirme ve yeniden yazma yeteneğiyle oldukça güçlü bir araçtır. Ancak, bu motorun sözdizimini hatırlamak ve kullanmak çoğu geliştirici için zorlayıcıdır. En basit yeniden yazma kuralları bile genellikle örnek arayışına yol açar. Sözdiziminin dizeler içinde yer alması, standart Smalltalk geliştirme araçlarının (gönderenleri, uygulayıcıları bulma, kod tamamlama, yeniden düzenleme) işlevsiz kalmasına neden olur ve bu da öğrenme eğrisini artırır.
Bu zorlukları aşmak için BPatterns geliştirilmiştir. BPatterns, yeniden yazma motorunun üzerine inşa edilmiş, akıcı ve Smalltalk-yerel bir API sunar. Bu yaklaşım, sıradan Smalltalk bloklarını desen (pattern) olarak kullanarak, geliştiricilerin karmaşık sözdizimini ezberlemek zorunda kalmadan motorun gücünden faydalanmasını sağlar. Temelde, BPatterns, yeniden yazma motorunun kullandığı aynı desen düğüm sınıflarını kullanarak bir desen AST'si oluşturur, böylece tüm orijinal eşleştirme ve yeniden yazma mekanizmaları daha erişilebilir ve betiklenebilir bir arayüzle sarılmış olur.
BPatterns, yeniden yazma motoru için bir Smalltalk DSL'i (Domain-Specific Language) görevi görür. Bu sayede, geliştiriciler desenleri tanımlamak ve uygulamak için basit Smalltalk kodunu kullanabilirler. Örneğin, bir desenin kullanıcılarını bulmak veya kod parçacıklarını yeniden yazmak sadece birkaç mesaj çağrısıyla mümkün hale gelir. En önemlisi, BPatterns ile çalışırken sözdizimi vurgulama, kod tamamlama, gezinme ve yeniden düzenleme gibi tüm standart Smalltalk geliştirme araçları sorunsuz bir şekilde çalışır. Bu, geliştiricilerin sistemle etkileşim kurma ve anlamalarını derinleştirme biçimini kökten değiştirir, böylece yeniden yazma motorunun muazzam gücünü "sözdizimi vergisi" ödemeden kullanmalarını sağlar.
Smalltalk'un güçlü yeniden yazma motorunun karmaşık sözdizimi, BPatterns sayesinde standart Smalltalk araçlarıyla entegre, daha erişilebilir ve verimli bir şekilde kullanılabilir hale geliyor.