add snapshot model and controller