partially through block call