add commands, interfaces and a repository