Half decent implementation of success/failure