fixes #101, refactored singletextchange to a clearer interface