complete migration to generic interface