general computation flow is clear