add initial testable version