interface and f2j implementation mostly done