more flexible methods