variable functions implemented