Closes #4 and Closes #40