Split into several files; add decorator