outline of how it works