initial version with full feature set