implemented user functions