Add theory and implementation details