Draft ... need refactoring !!!!