mark 'private' functions with underscore
added requirements