new methods, cleaner interface