abstraction fn + doc update