partial functions implemented