basic functionality library