more solutions. could probably use some comments..