cleaned up API implementation, call/template has more variables