Update docs, update comments, abstract init method, make checks on initialization, add minwidth option and viewport check method