Better extensibility and some tracing