Fixes #14,Fixes #13,Fixes #15,Fixes #16,Fixes #17,Fixes #18,Fixes #21,Fixes #22, Fixes #23