Could all the doSlice methods be static? Also, make them `protected` so they can be overridden?