Some basic components.
Also use non-pure virtual update function since it should be up to the
implementator of a component to define it's own update handler.