enhance auto_release, seperate interfaces and implementations