end-to-end design