final + tests