Completed initial experimentation and prototype implementation TODO: Add tests!