changed design direction: not emulating the base function's since they are too inconsistant