Reworked the context_init functions, and add context_recycle