Add core implementation | update interfaces