initial version, some documentation needed