very hacky but it looks so nice, I think, testing is required