refactored implementations
refactored implementations
more refacotring