Add POCO base grain class with explicit state passing