Added domain objects and some basic implementations of shuffle algorithms