factored out kan extensions and powers