Such a feature is composite-enough to need your own implementation. Chances are that you will find kits helpful.