finished interface change (TODO: use from cache if available)