very loose initial interface for wrapping; needs lots of TLC