A constraint solver based on Cassowary