closes #3 and closes #4