move non-implementation stuff out of todo