Why does it follow this pattern, at least in the docs, where the user is supposed to subclass Scene and provide a construct method? How does inheritance help here? Wouldn't it be simpler if instead users can make Scene using their own abstractions and functions in whatever way they feel is appropriate?