changes in internal implementation