preparation implementation