working base implementation