work in progress and refactoring
work in progress and refactoring