different division of functions
shared types
some shared functions
creat simpler if derived
shared creat function; remove syscall.init for now