How about `def drop(num: Int) =  substring(n, num + 1)` instead? Same concept for `take`. More readable.