calling functions works, but needs more documentation and flexibility