cryptkeeper; adopted and updated