semi final version
refactoringn style in progress