add abstract extension to shorten extension creation
Merge branch 'develop'