add functional code, update README