review this, closes #28