All required functionality implemented