move over jack's prototype code to models, we can carve as needed