python api
re-thinking a bit
merge with master
testing it out