checkout simulator, with some nice ruby introspection