Enhancements. Todo: tests, tests and tests