initial import
refactoring ...