* thorough rework