final implementations