Changed naming, added modules
Added comments, invalid selection detection