Initial events implementation
continuation of gui extraction from core
Merge after Upload class conflict