! fix issues and add impl.