closes #61
closes #59
closes #58
closes #55 and closes #54
fixed merge conflict