refactored som stuff