All required logic implemented and working