refactoring
refactoring
added test suites