very rough file abstraction and key word development