this has turned into a complete mess...