A curated list of amazingly awesome CakePHP 3.x+ plugins, resources and shiny things.
Plugins with the ":strawberry:" icon have CakePHP 4 compatible release too.
If you are looking for CakePHP 2.x resources please visit:
- the CakePHP 2.x version of this awesome list
- this wiki with a list of not-yet upgraded plugins
Additional lists you might find useful:
For those wondering; this list differs from plugins.cakephp.org by supporting plugin subparts (instead of only the whole plugin/repo), more granular grouping and the primary focus on task specific functionality.
- Plugins
- APM
- Architecture
- Asset Management
- Auditing / Logging
- Authentication and Authorization
- Caching
- Code Analysis
- Debugging
- Dependency Injection
- E-commerce
- Environment
- File Manipulation
- Filtering and Validation
- Geolocation
- HTTP
- I18n
- Imagery
- Libs
- Markup
- Migration
- Miscellaneous
- Navigation
- NoSQL
- Notifications
- ORM / Database / Datamapping
- Queue
- REST and API
- Search
- Security
- SEO
- Skeleton
- Social
- Templating
- Testing
- Third Party APIs
- Software
- Web Applications
- Resources
- Conferences
- Contributing
Plugins for Application Performance Monitoring.
- NewRelic plugin - A complete plugin that enables full New Relic integration for a CakePHP application, including CLI naming, exceptions sending, custom timings, etc.
- NewRelic plugin - A simple plugin that enables just name transaction and browser timing using the New Relic PHP agent.
- ๐ Burzum/CakeServiceLayer plugin - Service layer and domain/business model implementation.
Tools for managing, compressing and minifying website assets.
- ๐ AssetCompress plugin - A complete asset manager for CakePHP.
- ๐ AssetMix plugin - Provides integration with Laravel Mix asset compilation.
- Assets plugin - Dynamic and "on the fly" asset files.
- Less plugin - Less parser plugin for CakePHP.
- MinifyHtml plugin - Compress HTML output.
Plugins for auditing and logging.
- ๐ AuditStash plugin - Flexible and rock solid audit log tracking.
- ๐ DatabaseLog plugin - Simple and stand-alone logging to database instead of files.
- ๐ Muffin/Footprint plugin - Plugin to allow passing currently logged in user to model layer.
- ๐ Version plugin - A plugin that facilitates versioned database entities.
Plugins and libraries for implementing authentication and authorization.
- ๐ Acl plugin - Managing ACL as database approach.
- ๐ ADmad/JwtAuth plugin - A plugin for authenticating using JSON Web Tokens.
- ๐ ADmad/SocialAuth plugin - A plugin which allows you to authenticate using social providers like Facebook/Google/Twitter etc. using SocialConnect/auth social sign on library.
- ๐ Authentication plugin - Official CakePHP authentication middleware plugin.
- ๐ Authorization plugin - Official CakePHP authorization stack.
- CakeDC/NavAuth plugin - A plugin for authenticating against Navisionยฎ service using SOAP or OData services. It includes NTLM authentication and more.
- ๐ CakeDC/Users plugin - Complete user management (admin panel, remember me, etc), Social login (FB, Twitter, LinkedIn, Google, Instagram), RBAC, API and more.
- CookieAuth plugin - A simple Cake 3 plugin to automatically authenticate users with Cookies.
- HierAuth plugin - A CakePHP plugin for hierarchical, role based, simple authorization.
- Muffin/OAuth2 plugin - OAuth2 authentication using the
league/oauth2-client
. - ๐ Muffin/Tokenize plugin - Event driven behavior for easily generating single-use security tokens.
- MultiTenant plugin - Easily build SaaS enabled web applications.
- ๐ TinyAuth plugin - Authentication and role based (single/multi) authorization as very light-weight approach.
- ๐ Tools:Passwordable - Containing Passwordable behavior for a DRY approach on password hashing.
- ๐ TwoFactorAuth plugin - Allows two factor authentication using Google Authenticator or similar app to generate one-time codes. Based on RobThree/TwoFactorAuth library.
- UserPermissions plugin - Allow groups of users or single users to view a specific page.
Plugins for caching data.
- ๐ Cache plugin - For caching views (HTML, CSV, JSON, XML, ...) as static cache files.
Plugins for analysing, parsing and manipulation codebases.
- ๐ CakeDC/PHPStan - A PHPStan extension to resolve CakePHP magic around getter return types for the static analyzer.
- ๐ IdeHelper plugin - Helps to make IDE support better by adding annotations to your existing code similar to what baking does to new code.
- ๐ TestHelper plugin - Provides testing enhancements and TDD support as browser backend.
Plugins for debugging and local development.
- Airbrake plugin A plugin to seamlessly integrate Airbrake with CakePHP for errors and exceptions.
- AssociationsDebugger plugin - A plugin that draws your model associations as diagram.
- ๐ CakephpWhoops plugin - PHP errors and exceptions for cool kids with filp/whoops.
- ๐ DebugKit plugin - The de-facto standard for debugging.
- ErrorEmail plugin - A plugin to email exception/error information to your dev team.
- ๐ Execution order - A demo app to display the execution order of files, methods and callbacks.
- Psa/FixtureCheck plugin - A plugin to help detect mismatches in live DB and fixtures in order to make fixture based tests more reliable and deployments safer.
- ๐ Sentry plugin A plugin to seamlessly integrate Sentry with CakePHP for errors and exceptions.
- ๐ Setup plugin - A lightweight setup plugin containing debugging and maintenance tools.
Plugins that implement the dependency injection design pattern.
- PimpleDi plugin Allows dependency injection based on Pimple library.
- PipingBag plugin - Dependency injection container plugin that adds the ability to configure object instances and their dependencies before they are used, and to store them into a container class for easy access.
Plugins and applications for taking payments and building online e-commerce stores.
- PaypalWPP plugin - For communicating with Paypal Web Payments Pro for transactions and information about your account.
Plugins for sending and parsing email.
- Elastic Email plugin - Email transport plugin for sending email via Elastic Email API.
- ๐ EmailQueue plugin - Email queue plugin with a preview and sender shell.
- Gourmet/Email plugin - Email helper, layout and more.
- ๐ Mailgun plugin - Email transport plugin for sending email via Mailgun.
- SendGrid plugin - Email transport plugin for sending email via SendGrid API.
Plugins for environment.
- Environments plugin - Plugin to handle environments.
- Gourmet/Aroma plugin - Database based configuration.
- Settings plugin - A plugin to manage your settings via your database.
Plugins for file manipulation.
- ๐ FileStorage plugin - Abstract file storage and upload plugin.
- FlyPie plugin - Abstract filesystem access using Flysystem.
- Image plugin - Image behavior that works much like Cake's built in TranslateBehavior.
- ๐ Josbeir/Filesystem plugin - Abstract Flysystem + file entity based upload plugin.
- ๐ Josegonzalez/Upload plugin - A customisable plugin that uses Flysystem to write to multiple backends (Dropbox, FTP, S3, Local, etc.).
- Proffer plugin - A customisable upload plugin with thumbnail generation.
- Xety/Cake3Upload plugin - A little plugin to upload file.
Plugins for filtering and validating data.
- Gourmet/Filters plugin - Extra dispatcher filters (maintenance, robots, ip, etc).
- Gourmet/Validation plugin - Extra validation providers (Respect, IsoCodes, etc.) and rules.
- HtmlPurifier plugin - Purifier Plugin that features a trait, behavior and helper to allow you to get sanitization and filtering where you need it. You can configure multiple sets of filter rules as well.
- HtmlPurifier plugin - Purifier Plugin Behavior that cleanses data before it is marshaled into the entity and/or before saving.
Plugins for geocoding addresses and working with latitudes and longitudes.
- ๐ Geo plugin - Containing Geocoder behavior and GoogleMaps helper.
Plugins for HTTP and client abstraction
- ๐ Http/Adapter/Cake library - Adapter for HTTPlug HTTP client abstraction.
Plugins for I18n (Internationalization) and L10n (Localization).
- ๐ ADmad/I18n plugin - A plugin with I18n related tools.
- ๐ Cake/Localized plugin - Localized validation and ready-to-use translation PO files.
- ๐ ShadowTranslate plugin - A plugin with shadow table based replacement for core's Translate behavior.
- Transifex plugin - Managing i18n PO files and translations via Transifex API.
- Translate plugin - Manage translations of your static content the easy way via web backend, incl. import from POT files, auto-suggest and auto-translate via API.
- Translation plugin - Extract pot files, translate string (manually, google, community), export translations to pot files.
Plugins for manipulating images.
- ๐ ADmad/Glide plugin - A plugin for using Glide image manipulation library.
- HtmlToImageView plugin - Render HTML view as image (jpg or png) using wkhtmltoimage.
- Imagine plugin - An image manipulation plugin and wrapper around Imagine.
- Thumber plugin - A plugin to create thumbnails using intervention/image.
Useful libraries or tools that don't fit in any of the other categories.
- Capcake - Deploy CakePHP applications using Capistrano.
- Chronos - A simple standalone DateTime API extension (successor of Carbon).
- Composer Installers - A multi framework Composer library installer.
- Composer/Packagist - A package and dependency manager.
- Graphviz - A Graphviz library.
- Rocketeer - PHP task runner and deployment package.
- makallio85/YamlRoute plugin - Configure routes with simple YAML files.
Plugins for working with markup.
- Gourmet/CommonMark plugin - Adds CommonMark Markdown parsing.
- ๐ Markup plugin - Allows to use PHP or JS based syntax highlighting.
Plugins and resources around migration and upgrading.
- ๐ Migrations plugin - (DB) Migration plugin.
- ๐ Upgrade app - Official upgrade app for 2.x=>3.x and 3.x=>4.x.
- ๐ Upgrade app (extended) - An extended upgrade app for 2.x=>3.x, between 3.x and some 4.x snippets.
- Upgrade/Migration Guide - Official migration guide.
Misc plugins and libraries.
- ActionsClass plugin - Gives you the ability to manage your Controller actions as single classes.
- ๐ Ajax plugin - A plugin to ease handling AJAX requests.
- CakeAdmin plugin - A non-stable user management plugin with a built-in admin area.
- ๐ CakeDC/Enum plugin - A plugin to add enumeration list support to your app.
- ๐ CakeDto plugin - Quickly generate useful data transfer objects for your app (mutable/immutable), replacing messy arrays and leveraging your IDE through typehinting and autocomplete.
- ๐ CakeImpersonate plugin - A component that stores the current authentication session and creates new session for impersonating Users. User can revert back to original authentication sessions without the need to re-login.
- CakeMiddlewares - A collection of Cakephp Middlewares.
- ๐ Calendar plugin - For generating basic calendars. Includes IcalView for ICS calendar file generation.
- Comments plugin - A fully customizable Comments plugin.
- CurrencyConverter plugin - A plugin to convert currency into another one.
- Dashboard plugin - Build beautiful dashboards for your cakes.
- DatabaseBackup plugin - A plugin to export, import and manage database backups.
- ๐ Feedback plugin - Allow visitors to send quick and easy feedback incl. a screenshot via sidebar form.
- ๐ Flash plugin - More powerful flash messages for your application.
- ๐ OPCache Preloader - An OPCache Preloader for CakePHP 4.x applications.
- OrcaServices/Heartbeat plugin - Monitor the hearbeat of your application (e.g. whether the database is available and up-to-date).
- Inertia plugin - Server side adapter for Inertia.js.
- Interval plugin - Converts seconds to human readable string (string to seconds), uses business hours (1 week = 5 days, 1 day = 8 hours).
- LinkScanner plugin - A plugin for recursively scanning links.
- Robotusers/Tactician plugin - Tools for Tactician command bus integration.
- ๐ Setup:Maintenance - Maintenance shell to go into maintenance mode for all requests with optional IP whitelisting.
- ๐ Shim plugin - A plugin containing useful shims and improvements as basis for your application.
- TokenVerify plugin - Easily issue tokens that can be used for mail authentication.
- ๐ Tools plugin - Containing lots of useful libs, helpers, behaviors, components, shells and more.
- UserTools plugin - User tools for login, registration, password reset and more. Works out of the box CRUD like and is highly configurable.
- Utils plugin - Containing useful components (Authorizer, Menu) and behaviors (WhoDidIt, Uploadable, Metas, Stateable).
- Wrench plugin - Maintenance Mode plugin. Easily extensible and customizable.
- Yaml plugin - For using YAML config files instead of PHP arrays.
Tools for building navigation structures.
- ๐ Icings/Menu plugin - A KnpMenu seasoned menu plugin for CakePHP.
Plugins for working with "NoSQL" backends.
- Monga plugin - Provides access to MongoDB datasource using
thephpleague/monga
.
Plugins for working with notification software.
- ker0x/CakeGcm plugin - A plugin to send downstream messages to an Android or iOS device through Google Cloud Messaging.
- Notifier plugin - A plugin that makes creating and reading notifications easy.
- ker0x/Push plugin - A plugin to send push notifications through services like Firebase Cloud Messaging.
Plugins that implement object-relational mapping or data-mapping techniques.
- ๐ ADmad/Sequence plugin - Behavior for maintaining ordered list of records.
- ๐ CakeDecimal plugin - A value object approach on handling decimals.
- ๐ Duplicatable plugin - Behavior for duplicating entities including related data.
- Fetchable plugin - Behavior for fetching entities from cache / memory.
- ๐ Lampager/Cake plugin - Rapid pagination without using OFFSET.
- JeremyHarris/LazyLoad plugin - An association lazy loader for entities.
- Lqdt/OrmJson plugin - Behavior and Trait for selecting, finding, getting and setting properties and values inside JSON type fields through CakePHP ORM.
- Money plugin - Money data type for CakePHP entities using sebastianbergmann/money.
- ๐ Muffin/Orderly plugin - Allows setting default order for your tables.
- ๐ Muffin/Sti plugin - Single Table Inheritance for CakePHP.
- ๐ Muffin/Trash plugin - Soft-delete behavior for CakePHP.
- PersistRelatedData plugin - Behavior for persisting selected fields of related models.
- Robotusers/Excel plugin - ORM wrapper for PHPExcel.
- ๐ Robotusers/TableInheritance plugin - Singe Table Inheritance (STI) plugin.
- ๐ RowLocker plugin - Exclusive locks for rows in your tables.
- Serializeable Data Types plugin - Serialize DB content as JSON or using phps serializing functions.
- ๐ Muffin/Webservices ORM plugin - An ORM like interface for webservices.
- ๐ Connehito/CakephpMasterReplica plugin - Switch master/replica database connections.
- ๐ Itosho/EasyQuery plugin - Behavior for easily generating some complicated queries like (bulk) insert/upsert etc.
- ๐ Icings/Partitionable plugin - Partitionable associations allowing for basic limiting per group.
Plugins and software for working with PDF files.
- ๐ CakePdf plugin - A plugin around PDF generation.
Plugins for working with event and task queues.
- CakeResque plugin - A plugin for Resque, a library for creating background jobs.
- ๐ CakeQueuesadilla plugin - A plugin that provides queueing integration with a variety of backends (BeanstalkD, MySQL, Redis, etc.).
- Gearman plugin - A plugin for offloading CakePHP tasks to a Gearman Job Server.
- ๐ Queue plugin - A minimal and dependency-free queue solution.
Plugins and web tools for developing REST-ful APIs.
- ๐ Alt3/Swagger plugin - Swagger 2.0 documentation for your CakePHP APIs using swagger-php and swagger-ui.
- Alt3/ValidationExposer plugin - Easily expose your application's validation rules.
- ApiPagination plugin - Injects pagination information from CakePHP's Paginator into serialized JsonView and XmlView responses.
- ๐ CakeDC/Api plugin - All-in-one solution to provide a complete API. It includes versioning, renderers, CRUD, authentication, extensions (paginate, filter, HATEOAS), and much more.
- Cors plugin - Activate CORS with Middleware.
- Cors plugin - A lightweight plugin for adding CORS headers to specified endpoints.
- CrudJsonApi plugin - Crud listener for building JSON API compliant APIs.
- ๐ FractalTransformerView plugin - A plugin which allows using Fractal transformers for your API output.
- ๐ MixerApi - Streamline development of modern RESTful APIs for your teams CakePHP project.
- ๐ SwaggerBake plugin - This plugin automatically builds your Swagger UI documentation from your existing models and routes. A redoc option is also available.
Plugins and software for indexing and performing search queries on data.
- ๐ Cake/ElasticSearch plugin - Alternative ORM using Elasticsearch as its backend.
- ๐ PlumSearch plugin - Search plugin implements custom, flexible and extendable search strategies. Implements PRG pattern.
- ๐ Search plugin - Provides easy searching/filtering for paginated views using PRG pattern.
- SphinxSearch plugin - Basic behaviour implementation for querying SphinxSearch indexes.
- ๐ Tags plugin - For tagging and finding tagged records.
Plugins and information around security, preventing vulnerabilities and protection against XSS and alike.
- ๐ Bruteforce - Simple way to add Brute Force Protection to your installation without involving database.
- BryanCrowe/EncryptedType - Simple solution that enables Encrypted data types to be stored in the database.
- ๐ Captcha plugin - Simple, unobstrusive and extendable captcha solution providing by default an image based math captcha.
- CipherBehavior plugin - Cipher your entities data with this behavior. Encryption is done at PHP level using CakePHP Security class.
- ๐ Expose plugin - Expose entities through additional UUIDs instead of their AIID primary keys to obfuscate those IDs and data associated with these numerically ordered values.
- ๐ Muffin/Obfuscate plugin - Primary key obfuscation/shortening using UUIDs, HashIds, Optimus, Tiny and/or custom obfuscation strategies.
- ๐ Muffin/Throttle plugin - A plugin for rate limiting (API) requests.
- ๐ Recaptcha plugin - Simple, lightweight Google Recaptcha v2.
- Recaptcha Mailhide plugin - A plugin that allows you to hide email addresses using reCAPTCHA.
- StopSpam plugin - A plugin that allows you to check if a username, email address or IP address has been reported as a spammer.
Search Engine Optimization.
- ๐ Muffin/Slug plugin - A plugin for generating slugs and finding records by slug. Uses a pluggable architecture which allows using your own slug generator class.
- Seo plugin - Auto-creates and manages your SEO tags.
- Sluggable plugin - A simple Cake3 plugin to slug fields and find records by slug.
- ๐ Tools:Slugged - Containing Slugged behavior to auto-generate URL-compatible slugs from titles.
Plugins and repositories around app skeletons.
- ๐ App template - An empty CakePHP project for use with composer.
- ๐ Crud plugin - CakePHP Application development on steroids - rapid prototyping / scaffolding & production ready code.
- ๐ MixerApi/Bake - Bake theme for generating RESTful controllers.
- Plugin Skeleton - A skeleton example to create a Cake3 plugin.
Plugins around social features.
- CakeDC/Forum plugin - Forum plugin including categories, threads and replies, reporting messages, moderators, admin interface and more.
- ๐ Ratings plugin - Allows users to rate records and displays ratings.
- SocialShare plugin - Link generator for sharing content on social networks.
Plugins for templating and lexing.
- Address plugin - An address helper that outputs a marked up address.
- ๐ Bake plugin - Provides code generation functionality.
- Bootstrap plugin - A Bootstrap 3 plugin with support for LESS.
- ๐ BootstrapUI plugin - Bootstrap 3 integration.
- CakeExcel plugin - An Excel view to generate XLSX files.
- Chocolate plugin - Front-End framework FormHelper extensions.
- CommonMark plugin - Adds CommonMark (markdown) support to models and views.
- ๐ CsvView plugin - A view class to easily generate CSV.
- Datalist plugin - Support for HTML5 datalist element with the possibility to create new entries into associated models.
- ๐ Feed plugin - Containing an RssView class to easily generate (complex) RSS feeds.
- InlineCss plugin - A plugin to convert HTML style blocks to inline CSS on a View template (intended for use with email templates).
- JadeView plugin - Jade template engine plugin.
- Liquid plugin - A plugin to use the Liquid templating language for views.
- ๐ Meta plugin - Makes handling meta tags and SEO relevant HTML markup DRY and easy.
- SocialMeta plugin - Adds support for Facebook's OpenGraph and Twitter's Card meta tags.
- ๐ TwigView plugin - A plugin to use the Twig Templating Language for views.
- VideoEmbed plugin - Helper for embedding YouTube, Vimeo and Dailymotion videos.
Plugins/Tools for testing codebases and generating test data.
- CakePHP Codeception module - The official CakePHP integration with Codeception.
- CakePHP CodeSniffer rules - The official CakePHP CS rules.
- ๐ CakephpFixtureFactories plugin - Create your fixtures dynamically on a test basis, accelerate the writing and maintainance of your tests.
- Faker plugin - Faker support for CakePHP fixtures.
- Fixtures plugin - Fixtures plugin to read existing fixtures and create table/insert data for quick start with app.
- FriendsOfCake/Fixturize plugin - More efficient inserting fixtures when running test suites by decreasing amount of inserts (mysql only).
- Gourmet/Muffin plugin - FactoryMuffin support for CakePHP fixture records.
Plugins for accessing third party APIs.
- CakeTmdb plugin - The Movie Database (TMDB) API integration.
- CloudflareDeploy Plugin - Useful console commands for deploying CakePHP apps using Cloudflare.
- GitHub plugin - Allows access to the GitHub REST APIs using the Webservice ORM.
- Jira plugin - Provides a helper to allow access to Jira's REST API using lesstif/php-jira-rest-client as the Vendor. Currently read-only access.
- Ratchet plugin - Brings the Ratchet websocket package to CakePHP.
- Salesforce plugin - Allows use of CakePHP's ORM to Query and Interact with Salesforce Enterprise Instances.
- Twitter plugin - Allows access to the Twitter REST and streaming APIs using the Webservice ORM.
Software for creating a development environment.
Software and tools for creating a sandboxed development environment.
- CakePHP.gitignore - The .gitignore file proposals.
- ๐ CakePHP Docker - A cakephp/app template for docker and kubernetes setup.
- CakePHP Vagrant Setup - Tool for spinning up multiple CakePHP 3.x Vanilla Dev Environments.
- Devilbox - A docker development environment for (CakePHP) apps to be auto-setup including a lot of tools.
- Docker - CakePHP in a docker container environment.
- ๐ Galley - A small Docker dev environment for CakePHP development which includes a simple command line utility.
- Mixer - A plugin to discover and manage CakePHP plugins.
- NetBeans - This package provides support for CakePHP in NetBeans 8.1+.
- Oven - Setup your favorite framework with 1 file and 1 click.
- PhpStorm plugin - CakePHP auto-completion support for console commands in PhpStorm IDE.
- Puppet - A server automation framework and application.
- Vagrant - A portable development environment utility.
IDE specific compatibility information and tips can be found here.
- CakeBlog - Open source blog software.
- Croogo - CMS software
- QuickApps-CMS - Open source content management system.
Web-based (demo) applications and tools.
- BlogMVC - A simple Blog example with CakePHP based on BlogMVC Project.
- Bookmarkr A bookmarking application built with the CRUD plugin.
- CakeFest - Demo application around the annual CakePHP Conference "CakeFest".
- Croogo 3.x - Croogo 3.x demo
- RealWorld - Example CakePHP codebase containing real world examples (CRUD, auth, advanced patterns and more) that adheres to the RealWorld spec and API.
- Sandbox - A sandbox CakePHP application with lots of demos and plugin showcasings.
- Query Examples Advanced query building examples.
- Xeta - A resource to help people starting with CakePHP.
- Vue.js Demo App - A CakePHP + VueJS single page application skeleton.
Various resources, such as books, websites and articles, for improving your CakePHP development skills and knowledge.
Where to get help.
- CakePHP-FR.org - The french community website.
- Official CakePHP Forum - This is for generic questions and alike.
- IRC Channel - Live chat/discussion with other devs and core devs.
- stackoverflow.com/questions/tagged/cakephp - This is for specific questions, ideally along with some example code.
Useful and current CakePHP-related websites and blogs.
- CakeDC - Articles around CakePHP.
- dereuromark.de - An extensive CakePHP core dev blog.
- jedistirfry.co.uk - A CakePHP related dev blog.
- josediazgonzalez.com - A mainly CakePHP related core dev blog.
- mark-story.com - CakePHP lead dev blog.
- waltherlalk.com - A CakePHP related core dev blog.
Fantastic CakePHP-related (e)books and other reading material.
Fantastic CakePHP-related videos.
- CakePHP - Channel about CakePHP videos.
Must-do tutorials.
Documentation and CakePHP-related reading and listening materials.
- CakePHP Cookbook(!) - The official CakePHP documentation.
Reading materials related to the CakePHP internals and decisions.
- Top 10 (and more) core contributors - Give 'em a hand.
International conference.
- cakefest.org - Annual CakePHP Conference.
Regional meet-ups.
- CakePHP-DE - MeetUps in Germany.
Please see CONTRIBUTING for details.
awesome-cakephp has been created by dereuromark and is currently maintained by him and the FriendsOfCake group. Thank you to all contributors, too.