implements core api