TODO: added some bits from my own TODO, he he