full api in Crud - now just refactor ~10 iterations :P