first implementation of blur, some are TODO still open