big refactoring agian and again ... ... ... make-up