Interface changes and new elements

It's mergeable at the moment!