Closes #76. Do most of #2, just need to use it now..