Not very clean, needs an upgrade