added several specs
refactoring