todo abstract