sparse working... cleanup needed