proper implementation + tests for final for #547