basic stuff mostly working