...and some refactoring again