major rework, almost ready