closes #7: reduce memory usage using soft refs