issue #3 some interface changes