Writing functional design