Add lazy combinator
code cleanup
merged userstate