added the base implementation