More work on components, refactored full-featured into a single file (no external templates)