Refactored to Zikula 1.3 standards