Use slicing syntax instead of methods and add a feature gate

cc @aturon 

r? anyone?
It's a shame the `(*self)` is needed here. Is that fundamental?