building flexible systems