First pass at full workflow