working,but not ideal
working well