The only thing that doesn't really work when using functions as components is the children.
We can fix this by creating a decorator to mark a function as component then do some stuff to make children work as expected. Of course, we need to check if *args or children are present.