#45 base implementation