working solutions. redundant though :/