change proposition implementation

Use actual proposition objects instead of explicit disjoint sets of
cleared and filled properties.
minor code cleanup