stable, wip before small refactor