basic working framework