completed functions