added rough essence reading
allocates memory
added write method