rethink
minor changes
refactor