move around functions
introduce elf_t