way refactored, WIP