Refactor flow

r? @metajack