better api versioning

close #1