Hi @theospears, here are the reasons why we did it this way:

1. The user might not ever reach the experiment, so it makes sense to store the experiment and alternative in the session and have it pulled down in the templatetag logic when needed instead of enrolling immediately
2. Sensible enrollment logic:
    * When the user hits the page, we don't know which variants are going to be in an experiment
    * We didn't want users to be able to create new experiments or enlist in experiments that don't exist
3. Your framework delays creating and enrolling users in experiments until the very end (rendering templates), so we thought this is more in-line with what people expect from this package