More flexible API