Extract snapshot functionality into constructor

Closes #33