closes #2 and closes #4