fix #2 introduce @Delegate