Detailed Algorithm Description