mostly working now, simple interface