Forward propagation + refactoring