rushed post, might have a few mistakes.