at least, implement the minimum subset of all the functions