This is still somewhat work-in-progress, but good enough to be useful. Some caveats: - large blurs don't work well with cascades - the implementation uses more memory than it could