aaaalmost ready for codereview
refactoring 0.1