added working UBO implementation