More WIP, added argument validation