added transactional support for recurrences and source of transaction is now polymorphic