doesn't throw exception