add first-class capabilities. closes #9