make it self-aware, closes #29