cleaned up the idea a bit