Full version

Full version with all function