initial pass at java api